art4 / json-api-client
JSON API 客户端
Requires
- php: ^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.35
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.3
- phpunit/phpunit: ^9 || ^10
README
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 个简单步骤操作
- 将您的 composer.json 更新为
"art4/json-api-client": "^0.10.2"
- 清除您的代码中的弃用警告
- 将您的 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。
🔊 更新日志
请参阅 更新日志 了解最近更改的更多信息。
🔧 贡献
请随意分叉并提交拉取请求。此项目遵循 语义版本控制 2 和 PER-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。请参阅许可证文件获取更多信息。