在 REST 响应中使用非标准 HTTP 状态代码是不是很好? [关闭]

Posted

技术标签:

【中文标题】在 REST 响应中使用非标准 HTTP 状态代码是不是很好? [关闭]【英文标题】:Is it good to use not standard HTTP status codes in REST responce? [closed]在 REST 响应中使用非标准 HTTP 状态代码是否很好? [关闭] 【发布时间】:2019-05-21 08:15:56 【问题描述】:

将 HTTP 标准中未描述的状态代码用于 REST API 的 REST 响应是否是个好主意?

例如:

470 或 770 -“未找到用户帐户” 471 或 771 - “用户帐户 找不到头像”

除了与标准的新状态代码重合之外,还有什么问题?

是否有代码范围可用于 REST API 特殊需求?

【问题讨论】:

这根本不是状态码的预期用法。 HTTP 和 REST 背后的理念是它们在应用程序中是通用的。做自定义的事情会“工作”,但你在前端或后端使用的框架可能会让你的生活变得地狱,如果你对其他开发人员使用你的 API 或使用你的 API 有任何希望,他们将不会轻松.更好的是在正文中发送带有自定义消息的标准状态代码。 404: account / avatar not found... 无法找到资源的标准。或者可能是 401:未授权可能适用于登录的情况 ***.com/questions/7996569/…的可能重复 如果你读过这个问题,请听 Julian Reschke,他确实编写了 HTTP 规范。 这是双重加不良,近乎思想犯罪。 【参考方案1】:

HTTP 标准提供状态代码来描述返回值。使用忽略标准 HTTP 状态的 API 很难为客户端工作。所以,服务器应该总是返回正确的状态码。

【讨论】:

以上是关于在 REST 响应中使用非标准 HTTP 状态代码是不是很好? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 状态代码是 REST 的示例吗?

了解 REST 响应和 HTTP 状态码

防止 FormsAuthentication 覆盖 WCF REST 中的响应状态

Spring RestController 异步结果

Angular 2 - 预检响应具有无效的 HTTP 状态代码 401

AngularJS HTTP 标头配置。预检响应具有无效的 HTTP 状态代码 401