大家有没有觉得 API 资源和 API 资源集合是鸡肋一样的存在
首先,我陈述一下,使用过程的中几个不行“不能”。
一、使用API资源类,可以定制接口返回到数据。但是不能自定义接口返回的元数据。
也就是,你无法再返回数据的data的同级,新增类似于"code"和"msg"的返回值。
以下是官方文档摘录
当然了,使用如上方法你将不能添加任何附加的元数据和集合一起返回。如果你需要自定义资源集合响应,你需要创建一个专用的资源来表示集合:
php artisan make:resource UserCollection
二、使用API资源集合类,可以定制元数据的返回。但是不能自定义列表数据的每一个项的数据返回。
也就是说,你的模型列表返回什么样的数据,API资源集合类,就是原封不动的返回前端,只是帮你转成json格式而已。
三、虽然可以通过API资源集合类内部再次调用API资源类的方法,可以达到,自定义返回列表数据的要求。但是不能各自的定制化。
也就是说,使用这种方式,你的API资源和API资源集合类将永远的绑定到了一起。代码如下所示。
class CourseCateCollection extends ResourceCollection
{
public function toArray($request)
{
return [
'code' => '200',
'msg' => 'success',
'data' => CourseCateResource::collection($this->collection),
];
}
}
有一种情况,又是需要去这种耦合的,比如,我分类列表页面返回的字段应该就是有限的几个,而分类详情相对会多一些。这个时候,又不能解决实际问题了。
四、通过自己封装返回值函数,包裹最外层返回的元数据,然后里面用API资源和API资源集合类。
这个时候,就有点舍本逐末的,我们使用API资源就是方便我们处理数据格式的,现在要我们自己封装函数,来处理数据格式的问题。那我们用API资源干啥。
你们怎么看?
推荐文章: