jetcamp/laravel-json-api-client

Laravel 客户端,方便访问 {json:api} API 数据

安装: 94

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:laravel-package

7.0.1 2024-08-02 10:44 UTC

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-includes
  • JsonApiClient::get('users')->withFields(['user'=> ['id','name']]) - 添加查询参数 fields[users]=id,name。见 https://jsonapi.fullstack.org.cn/format/#fetching-sparse-fieldsets
  • JsonApiClient::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-pagination
  • JsonApiClient::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