用 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
and 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
。