【发布时间】:2013-09-25 11:28:13
【问题描述】:
用 JSON 格式化响应的正确方法是什么?为什么?我见过不同的服务有两种方式,考虑一个简单的GET/users资源:
{
"success": true,
"message": "User created successfully",
"data": [
{"id": 1, "name": "John"},
{"id": 2, "name": "George"},
{"id": 3, "name": "Bob"},
{"id": 4, "name": "Jane"}
]
}
这就是我通常的做法。我有一些抽象的辅助字段,如success 和message,可能还有更多,但问题是我是否应该将data 字段中的数据嵌套到一个与资源相同的数组中 - users :
{
"success": true,
"message": "User created successfully",
"data": {
"users": [
{"id": 1, "name": "John"},
{"id": 2, "name": "George"},
{"id": 3, "name": "Bob"},
{"id": 4, "name": "Jane"}
]
}
}
即使我们不使用抽象:
{
"users": [
{"id": 1, "name": "John"},
{"id": 2, "name": "George"},
{"id": 3, "name": "Bob"},
{"id": 4, "name": "Jane"}
]
}
似乎users 键已过时,因为任何客户端都会知道他们调用的路由,其中包含提到用户的/users,以及客户端代码之类的
$users = $request->perform('http://this.api/users')->body()->json_decode();
看起来比
$users = $request->perform('http://this.api/users')->body()->json_decode()->users;
因为它避免重复users。
【问题讨论】: