我正在尝试创建一个具有2个依赖项的服务。其中一个依赖项是内部管理的,而第二个需要对第三方API进行外部http出站调用。该序列需要更新资源,然后执行http出站呼叫。
所以我的问题是,如果第二步失败,返回的http状态代码是什么?
如果响应是424或500,并且消息正文解释了遇到的错误吗?
答案 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服务不可用是合适的。 502 Bad Gateway应该用于来自上游服务器的未知错误,在那里你不知道如何回应。