HTTP状态424或500表示外部依赖性的错误

时间:2013-09-10 02:27:28

标签: rest http-status-codes

我正在尝试创建一个具有2个依赖项的服务。其中一个依赖项是内部管理的,而第二个需要对第三方API进行外部http出站调用。该序列需要更新资源,然后执行http出站呼叫。

所以我的问题是,如果第二步失败,返回的http状态代码是什么?

如果响应是424或500,并且消息正文解释了遇到的错误吗?

  • 424:方法失败 - 表示方法未在其范围内的特定资源上执行,因为方法执行的某些部分失败导致整个方法被中止。
  • 500:内部服务器错误。

3 个答案:

答案 0 :(得分:37)

您所询问的失败是在服务本身内部发生的失败,因此5xx状态码范围是正确的选择。 503 Service Unavailable看起来非常适合您所描述的情况。

5xx代码用于告诉客户端即使请求没问题,服务器也遇到了某种问题。另一方面,4xx代码用于告诉客户端它做错了什么(并且服务器很好,谢谢)。 Sections 10.4 and 10.5 of the HTTP 1.1 spec解释了4xx和5xx代码的不同用途。

状态代码424在WebDAV standard中定义,用于客户端需要更改其操作的情况 - 服务器在此处没有遇到任何问题。

答案 1 :(得分:21)

由于第二项操作是外部服务电话,您应根据情况选择502或504。

引自:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.3

10.5.3 502 Bad Gateway

服务器在充当网关或代理时,从尝试完成请求时访问的上游服务器收到无效响应。

10.5.4 503服务不可用

由于服务器临时过载或维护,服务器当前无法处理请求。这意味着这是一个暂时的条件,经过一段时间的延迟后会得到缓解。如果已知,则可以在Retry-After报头中指示延迟的长度。如果没有给出Retry-After,客户端应该像处理500响应一样处理响应。

  Note: The existence of the 503 status code does not imply that a
  server must use it when becoming overloaded. Some servers may wish
  to simply refuse the connection.

10.5.5 504网关超时

服务器在充当网关或代理时,未收到URI指定的上游服务器(例如HTTP,FTP,LDAP)或其访问所需的其他辅助服务器(例如DNS)的及时响应试图完成请求。

  Note: Note to implementors: some deployed proxies are known to
  return 400 or 500 when DNS lookups time out.

答案 2 :(得分:7)

如果问题是服务器期望缓解的问题(例如,如果它从上游服务器获得503),那么

503服务不可用是合适的。 502 Bad Gateway应该用于来自上游服务器的未知错误,在那里你不知道如何回应。