使用 dingo 第三方扩展包,无法自定义响应格式的问题
最近在学习使用 Laravel 编写符合 restful 风格的 api,想试试 dingo 这个扩展包,动手操作了一下,基本还是很顺利的,只是在响应(Respone) 的时候遇到问题:
我期望的响应格式:
{
"code": 0,
"msg": "success",
"data": {
"username": "username"
}
}
当前的格式:
{
"data": {
"username": "username"
}
}
我尝试使用 setMeta 的方式处理后的结果:
{
"meta":{
"code": 0,
"msg": "success"
},
"data": {
"username": "username"
}
}
还是跟我预期不符合。
我使用了 dingo 提供的转化器,转化了 collection ,写法如下:
return $this->response->collection($result,new OrderTransformer);
翻阅了文档,文档里没有提到要如何自定义响应格式,查阅了网络上相关材料,得出需要复制第三方类库中的 format 文件并且重新实现相关方法,这对我来说不够优雅,想请问大家有没有比较好的方法可以实现我的期望格式呢?
谢谢。
我的做法是不使用dingo的方法, 用Response::json()方法组合出想要的返回格式.
dingo的客制化比较弱, 所以希望自定义返回格式的还是自己实现比较好
dingo
到底有什么好处啊?它能做的原生框架都能做啊。他和你有一样的问题 https://github.com/dingo/api/issues/1080
利用laravel的事件,监听 Dingo\Api\Event\ResponseWasMorphed 这个事件 然后加上自己的公共响应参数
@轻描淡写 dingo 目前唯一的优势可能也就是简单方便的 版本控制了(使用 Http Header)。 其他的没什么意义了。。