在什么情况下 REST API 应返回 HTTP 状态 503

San*_*ale 5 rest http-status-code-503

标准说:

10.5.4 503 服务不可用。由于服务器暂时超载或维护,服务器当前无法处理该请求。这意味着这是暂时的情况,延迟一段时间后就会得到缓解。

参考:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

如果服务器在数据库访问级别存在锁争用,那么服务器在这种情况下是否应该返回 503。或者 503 状态的含义是:

  • 网络过载
  • DOS类型情况
  • 最大负载平衡
  • 明确的维护窗口。

在其他什么情况下返回 HTTP 状态 503 是有意义的。

非常感谢任何详细的澄清。

unc*_*ion 3

假设服务遇到了数据库争用。没有关于服务器必须做什么的规则。但是,如果您认为问题是暂时的并且会在一段时间后得到解决,您可以选择返回 503。您可以指定Retry-After标头来通知调用者何时可以重试。这对于允许调用者自动从问题中恢复特别有用。您可以将其用于其他一些场景,并且调用者可以在指定时间段后自动重试。

状态代码有 2 个用途

  1. 让呼叫者知道发生了什么
  2. 让来电者知道他下一步可以做什么

与发送 500 相比,向呼叫者发送带有 Retry-After 的 503 为呼叫者提供了更多选择。当然,呼叫者可以完全忽略 Retry-After 并将其视为 500,但作为服务提供商,您将提供更多信息和选项。