dorvidas/laravel-json-api-client

Laravel 客户端,用于轻松访问 {json:api} API 中的数据

v0.0.1-alpha 2018-07-30 21:01 UTC

This package is auto-updated.

Last update: 2024-09-07 15:39:05 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 dorvidas\laravel-json-api-client
  • 将服务提供者 Dorvidas\JsonApiClient\Providers\JsonApiClientServiceProvider::class 添加到 config/app.php
  • 发布供应商配置 php artisan vendor:publish

使用

获取客户端

您可以通过几种方式获取客户端

  • 通过外观 \Dorvidas\JsonApiClient\Facades\JsonAPIClient
  • 从服务容器解析 Dorvidas\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 对象。它将包含公共变量

  • $response->data - 包含响应数据。
  • $response->meta - 包含响应的元数据。
  • $response->errors - 包含响应的错误数据。
  • $response->status - 保存请求的 HTTP 状态码。它还有辅助函数
  • $response->meta('count') - 返回具有键 count 的元数据。

异常

//@todo