how to custom global response format for dingo/API?

我目前接口响应代码是这样的:

$categories = Category::first();
return $this->response->item($categories, new CategoryTransformer());

响应的结果是这样的:

{
    "data": {
        "id": 1,
        "name": "大侠",
        "alias": "daxia"
    }
}

但我想响应下面的格式:

{
    "data": {
        "id": 1,
        "name": "大侠",
        "alias": "daxia"
    },
    "status": "success",
    "code":200,
    "message":"获取信息成功"
}

我将响应结果再次包装后,发现响应结果是没有 Transformer 前的:

$categories = Category::first();
$data = $this->response->item($categories, new CategoryTransformer());

return \Response::json([
    'status'=>'success',
    'code'=> 200,
    'message' => '获取分类列表成功',
    'data'=> $data,
]);

响应结果:

{
    "status": "success",
    "code": 200,
    "message": "获取分类列表成功",
    "data": {
        "exception": null,
        "original": {
            "id": 1,
            "name": "大侠",
            "alias": "daxia",
            "created_at": null,
            "updated_at": null
        },
        "headers": []
    }
}

求大神指导啊!不知道咋弄了,怎么才能定义一个全局的响应方法,每次响应的时候调用此方法传入必要参数呢?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8
Summer

下面的代码:

$category = Category::find(1);
$res = $this->response()->item($category, new CategoryTransformer());
$res->addMeta('status' , 'success');
$res->addMeta('code' , '200');
$res->addMeta('message' , '获取分类成功');

return $res;

输出:

file

8年前 评论
Summer

可以查阅下面的类提供的方法:

Dingo\Api\Http\Response

8年前 评论
Summer

如果想更多的定制,那就得修改 Response Transformer,见此文档

8年前 评论

@Summer 谢谢大神回答!这个我在文档里也看到了,但我不想有 meta 字段可以吗?新增的字段和 data 同级,能实现么

8年前 评论
Summer

@6ag 可以,就是答案 三楼

8年前 评论

@Summer 谢谢,我去研究下

8年前 评论
Rming

中间件可以么

8年前 评论

@Rming 应该不行吧,中间件不是在路由和控制器之间的么,这是响应

8年前 评论

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