我偶然发现了一种非常普遍的做法。我什至找到了一个给它起名字的网页,但我忘记了名字,再也无法在谷歌上找到那个页面了。
实践是来自 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 属性会发挥作用。