jetcamp/ laravel-json-api-client
Laravel 客户端,方便访问 {json:api} API 数据
7.0.1
2024-08-02 10:44 UTC
Requires
- guzzlehttp/guzzle: ^7.0.1
- woohoolabs/yang: ^3.0
- woohoolabs/yin: ^4.3.0
This package is auto-updated.
Last update: 2024-10-02 11:08:44 UTC
README
用于轻松访问 {json:api} API 数据的客户端。使用像 Guzzle 或 CURL 这样的 PHP HTTP 客户端进行 API 请求需要太多的代码。此包尝试通过允许以最简单的方式从 API 获取数据来简化此过程:
$response = JsonApiClient::get('users'); //Let's return this data to view return view('users', ['users'=> $response->data]);
安装
- 安装包
composer require jetcamp\laravel-json-api-client。 - 将服务提供者
JetCamp\JsonApiClient\Providers\JsonApiServiceProvider::class添加到config/app.php - 发布供应商配置
php artisan vendor:publish。
使用
获取客户端
您可以通过几种方式获取客户端
- 通过外观
\JetCamp\JsonApiClient\Facades\JsonAPIClient - 从服务容器中解析
JetCamp\JsonApiClient\JsonApiClient::class
进行请求
- get($endpoint)
JsonApiClient::get('users'); //get users
- post($endpoint)
JsonApiClient::jsonData([])->post('users');//store user
- patch($endpoint)
JsonApiClient::jsonData([])->patch('users');//do patch request
请求选项
JsonApiClient::get('users')->withIncludes(['posts'])- 在请求 URL 中添加查询参数include=posts。见 https://jsonapi.fullstack.org.cn/format/#fetching-includesJsonApiClient::get('users')->withFields(['user'=> ['id','name']])- 添加查询参数fields[users]=id,name。见 https://jsonapi.fullstack.org.cn/format/#fetching-sparse-fieldsetsJsonApiClient::get('users')->withFilters(['users'=>['id'=>['eq'=>1]]])- 添加查询参数filter[users][id][eq]=1。{json:api} 对过滤是中立的,因此您可以选择自己的过滤策略并传递您想要的任何数组。见 https://jsonapi.fullstack.org.cn/format/#fetching-filtering。JsonApiClient::get('users')->withQuery(['field'=>1])- 添加查询参数field=1=1。理论上,添加过滤器、包含、字段和分页字段应该是足够的。JsonApiClient::limit($limit, $offset)->get('users')- 将结果约束添加到查询参数 `page[limit]=x&page[offet]=y`。见 https://jsonapi.fullstack.org.cn/format/#fetching-paginationJsonApiClient::formData(['name'=>'John'])->post('users')- 定义 POST 表单数据。表单数据可以包含文件,例如JsonApiClient::formData(['image'=> $request->file('image')])->post('photos')。JsonApiClient::jsonData(['name'=>'John'])->post('users')- 定义 POST JSON 数据。JsonApiClient::throwException(true)- 当收到非 2xx 状态码时,将抛出适当的异常。如果要自己处理请求响应状态,请设置为false。JsonApiClient::token($accessToken)->get('users')- 定义将添加到Authorization:Bearer {$accessToken}标头的访问令牌。注意,如果有jwt会话变量,则不需要在此处设置令牌,因为访问令牌将自动添加到请求中。
处理响应
请求将返回 JsonApiResponse 对象。它将包含公共变量
$resopnse->data- 包含响应数据。$resopnse->meta- 包含响应的元数据。$resopnse->errors- 包含响应的错误数据。$resopnse->status- 包含请求的 HTTP 状态码。它还具有辅助函数$resopnse->meta('count')- 返回具有键count的元数据。
异常
//@todo