【发布时间】:2012-07-11 02:34:35
【问题描述】:
我偶然发现了一种非常普遍的做法。我什至找到了一个为其命名的网页,但我忘记了名称,并且无法再在 google 上找到该页面。
实践是来自 REST 服务的每个 JSON 响应都应具有以下结构:
{
"status": "ok",
"data": { ... }
}
或在错误情况下:
{
"status": "error",
"message": "Something went wrong"
}
我的问题:JSON 中为什么需要这样的“状态”属性有什么意义?在我看来,这就是 HTTP 状态代码的用途。
REST 在客户端和服务器之间使用 HTTP 通信方式,例如“DELETE”动词应该用于删除。同样,如果找不到资源等,则应使用 404。因此,根据这种想法,任何错误情况都应在 HTTP 状态中正确编码。
是否有特定原因在错误情况下返回 HTTP 200 状态代码并在 JSON 中出现错误?在处理响应时,它似乎使 javascript 条件分支更加复杂。
我发现在某些情况下,状态可能是“重定向”以告诉应用程序重定向到某个 URL。但如果使用了正确的 HTTP 状态码,浏览器将“免费”执行重定向,从而正确维护浏览历史记录。
我主要想象你的两个可能的答案:
- 要么有两个争吵的社区,每个社区都有他们最喜欢的方法(始终使用 HTTP 状态与从不使用 HTTP 状态)
- 或者我遗漏了重要的一点,您会告诉我,尽管在某些情况下应该使用 HTTP 状态,但在某些特定情况下,HTTP 状态不适合并且“状态”JSON 属性会发挥作用。
【问题讨论】: