使用 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 文件并且重新实现相关方法,这对我来说不够优雅,想请问大家有没有比较好的方法可以实现我的期望格式呢?

谢谢。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5

我的做法是不使用dingo的方法, 用Response::json()方法组合出想要的返回格式.
dingo的客制化比较弱, 所以希望自定义返回格式的还是自己实现比较好

4年前 评论
际遇 (楼主) 4年前
ericxilix (作者) 4年前
际遇 (楼主) 4年前

dingo到底有什么好处啊?它能做的原生框架都能做啊。

4年前 评论

利用laravel的事件,监听 Dingo\Api\Event\ResponseWasMorphed 这个事件 然后加上自己的公共响应参数

4年前 评论
Epona

@轻描淡写 dingo 目前唯一的优势可能也就是简单方便的 版本控制了(使用 Http Header)。 其他的没什么意义了。。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!