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

谢谢。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

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

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

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

4年前 评论

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

4年前 评论
Epona

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

4年前 评论

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