lassehaslev / api-response
用于生成JSON API响应的辅助类
Requires
- php: >=5.4.0
- symfony/http-foundation: >=2.4
Requires (Dev)
- phpunit/phpunit: 5.4.*
This package is not auto-updated.
Last update: 2024-09-14 19:20:09 UTC
README
用于生成JSON API响应的辅助类
动机
为所有事物编写API响应总是很困难,这个包会使这项工作变得容易得多。
这个包及其基本概念受到了 dingo/api 的极大启发。并且使用了与 Fractal 相同的大部分转换器语法。
安装
我主要在我的 Laravel 项目中使用这个包。
在项目文件夹中运行 composer require lassehaslev/api-response
使用方法
响应者
响应者是我们调用要将哪些项转换为JsonResponse的地方。这个类需要实现 ResponseTrait
,然后会使 $this->response
对象可用。这将使我们可以使用 $response->item()
和 $response->collection()
。这两个函数的第一个参数是要转换的数据,第二个参数是转换数据的转换器。以下将提供更多信息。
use LasseHaslev\ApiResponse\Responses\ResponseTrait; class ResponseCaller { use ResponseTrait; public function getItem() { return $this->response->item( [ 'name'=>'Test name' ], new Transformer ); } public function getCollection() { return $this->response->collection( [ [ 'name'=>'Test name' ], [ 'name'=>'Another test name' ] ], new Transformer ); } }
转换器
转换器是我们将数据格式化为API的地方。你所要做的就是创建一个带有你想要转换的模型的 public function transform
。然后你返回一个包含数据的 array
。
你还可以让转换器包含更多的数据。当模型有数据时,这可能很有用。这是通过两种不同的类型 default
和 available
来实现的,但两种类型的工作方式相同:更新类型的数组示例:protected $defaultIncludes = ['name']
。然后你需要创建一个具有 include
前缀的公共函数。例如:public function includeName( $model )
。
默认包含
默认包含将默认包含。
可用包含
可用包含只有在提供了URL参数 include
时才会包含。例如 /api/request?include=name
如果你有多个可用包含,你可以通过具有以下URL请求来包含它们:/api/request?include=first,second
use LasseHaslev\ApiResponse\Transformers\Transformer as BaseTransformer; class Transformer extends BaseTransformer { protected $defaultIncludes = [ 'default' ]; protected $availableIncludes = [ 'available' ]; /** * Transform $model * * @return Array */ public function transform( $model ) { return [ 'name'=>$model[ 'name' ], ]; } /** * Return include default * * @return Array */ public function includeDefault($model) { return [ 'name'=>'Include default' ]; } /** * Return include available * * @return Array */ public function includeAvailable($model) { return [ 'name'=>'Include available' ]; } }
许可证
MIT,狗