【问题标题】:Best API response format in JsonJson 中最好的 API 响应格式
【发布时间】:2022-12-10 15:22:23
【问题描述】:
哪一个最适合 API 响应?
- 在这里我用实际数据返回一些元信息。尽管我不确定他们是否需要使用这些元信息。
{
"version": "1.0.0",
"isError": false,
"statusCode": 200,
"message": "Permission Object",
"data": {
"id": 1,
"name": "user create",
"created_at": "2022-11-30T10:18:20.000000Z"
}
}
- 在第二个示例中,我只返回相关数据。
{
"id": 1,
"name": "user create",
"created_at": "2022-11-30T10:18:20.000000Z"
}
如果有其他更好的方法,请给我建议。提前致谢。
【问题讨论】:
标签:
json
api
rest
api-design
【解决方案1】:
我注意到您使用了 REST 标签,所以我假设您正在考虑 RESTful API 实现并且对 RESTful API 设计有一些了解。
如果您需要一些最佳实践,我认为其中有几个很有用。 here和here。
看看你的例子,我更喜欢第二种选择,原因是:
-
IsError 可以通过 HTTP 响应来确定,例如400、500、200、201,所以它是多余的。
-
Status 和 Message 在响应成功时也是多余的,但在错误状态下可能有用,例如在 ASP.NET 中,您可以使用 ProblemDetails 响应(您可以自定义您想要的方式)。
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Unable to create a new user due to missing name",
"status": 400,
"traceId": "00-0aa7d64ad154a1e1853c413a0def982d-195d3558c90f7876-00"
}
-
version 是一个有趣的人。通常,它可以包含在请求头或 URL 中。如果 API 无法处理请求的版本,那么它应该在问题详细信息中返回错误。
因此,我更喜欢第二个选项,并在出现错误时发送问题详细信息响应。
【解决方案2】:
JSON API 是一种适用于 HTTP 的格式。它描述了客户端应如何从服务器请求或编辑数据,以及服务器应如何响应所述请求。