art4/json-api-client

JSON API 客户端

1.2.0 2023-11-28 13:34 UTC

README

Latest Version Software License Build Status codecov Total Downloads

JsonApiClient 👷‍♀️ 是一个PHP库,用于验证和处理来自 JSON API 服务器的响应体。

格式: JSON API 1.0

🏁 目标

  • ✅ 完全符合 JSON API 1.0 规范
  • ⬜ 开放新规范小版本(参见 #90
  • ✅ 处理/验证服务器响应体
  • ✅ 处理/验证客户端请求体
  • ✅ 提供一种简单获取数据的方法
  • ✅ 允许扩展性和类/模型注入

📦 安装

通过 Composer

$ composer require art4/json-api-client

🏗️ 升级到 v1

版本 1.0 已最终发布。 🎉

从版本 0.8.0 开始,没有破坏性更改。每个更改都是向后兼容的,并且在 v1.0 中删除的功能只会触发 v0.10 的弃用警告。

要从 v.x 升级到 v1,只需更新到 0.10.2 并解决所有弃用警告。

或者按以下 3 个简单步骤操作

  1. 将您的 composer.json 更新为 "art4/json-api-client": "^0.10.2"
  2. 清除您的代码中的弃用警告
  3. 将您的 composer.json 升级到 "art4/json-api-client": "^1.0" 而不会破坏您的应用程序

(比较 Symfony 升级文档)

🚀 使用

请参阅 快速入门指南文档

作为解析器使用

use Art4\JsonApiClient\Exception\InputException;
use Art4\JsonApiClient\Exception\ValidationException;
use Art4\JsonApiClient\Helper\Parser;

// The Response body from a JSON API server
$jsonapiString = '{"meta":{"info":"Testing the JsonApiClient library."}}';

try {
    // Use this if you have a response after calling a JSON API server
    $document = Parser::parseResponseString($jsonapiString);

    // Or use this if you have a request to your JSON API server
    $document = Parser::parseRequestString($jsonapiString);
} catch (InputException $e) {
    // $jsonapiString is not valid JSON
} catch (ValidationException $e) {
    // $jsonapiString is not valid JSON API
}

注意:使用 Art4\JsonApiClient\Helper\Parser 只是为了直接使用 Manager

$document 实现了 Art4\JsonApiClient\Accessable 接口以访问解析后的数据。它有 has($key)get($key)getKeys() 方法。

// Note that has() and get() have support for dot-notated keys
if ($document->has('meta.info'))
{
    echo $document->get('meta.info'); // "Testing the JsonApiClient library."
}

// you can get all keys as an array
var_dump($document->getKeys());

// array(
//   0 => "meta"
// )

作为验证器使用

JsonApiClient 可以用作 JSON API 内容的验证器

use Art4\JsonApiClient\Helper\Parser;

$wrong_jsonapi = '{"data":{},"meta":{"info":"This is wrong JSON API. `data` has to be `null` or containing at least `type` and `id`."}}';

if ( Parser::isValidResponseString($wrong_jsonapi) ) {
// or Parser::isValidRequestString($wrong_jsonapi)
	echo 'string is valid.';
} else {
	echo 'string is invalid json api!';
}

// echoes 'string is invalid json api!'

扩展客户端

需要更多功能?想要直接注入您的模型?通过 Factory 轻松扩展 JsonApiClient。

🔊 更新日志

请参阅 更新日志 了解最近更改的更多信息。

🔧 贡献

请随意分叉并提交拉取请求。此项目遵循 语义版本控制 2PER-CS2.0

此项目附带一个 docker-compose.yml 文件,其中包含所有开发工具。

运行 docker compose build 来构建镜像。构建完成后,运行 docker compose up -d 以在后台启动容器。

运行 docker compose exec -u 1000 php bash 在运行的容器中使用 bash。在那里您可以使用所有工具,例如使用 composer --version 的 composer。

使用 exit 从容器中注销,并使用 docker compose stop 停止正在运行的容器。

所有以下命令都可以在运行的docker容器内执行。

✅ 测试

运行PHPUnit对所有测试

$ composer run phpunit

运行PHPStan进行静态代码分析

$ composer run phpstan

让PHPUnit生成一个HTML代码覆盖率报告

$ composer run coverage

您可以在.phpunit.cache/code-coverage/index.html中找到代码覆盖率报告。

✅ 重复使用

REUSE Helper工具使人类和机器都能轻松地进行许可。它下载完整的许可文本,将版权和许可信息添加到文件头中,并包含一个用于识别问题的lint工具。

检查所有文件是否符合REUSE规范

composer run reuse-lint

运行此命令为src和tests文件夹中的PHP文件添加注释

composer run reuse-annotate

❤️ 致谢

📄 许可证

GPL3。请参阅许可证文件获取更多信息。