我有一个API,根据客户的POST请求:
换句话说,正常的网络服务器。
如果远程服务器向我发送500
(或任何其他错误),我应该向我的客户发送500 Internal Server Error
还是502 Bad Gateway
?
来自RFC 7231,
6.6.3. 502 Bad Gateway
The 502 (Bad Gateway) status code indicates that the server, while
acting as a gateway or proxy, received an invalid response from an
inbound server it accessed while attempting to fulfill the request.
一方面,502 Bad Gateway
看起来像是用于“哑”服务器,它只是将请求转发给远程服务器,并将其响应返回给客户端,而不需要太多处理。
另一方面,无法访问远程服务器听起来不像500 Internal Server Error
...更像是“远程服务器错误”。
我应该使用哪一个? 500
,502
或其他?
答案 0 :(得分:4)
我和500一起去。
这并不重要 - 两者都是5xx系列错误的一部分,意思是"我们搞砸了,而不是你" - 所以到底出了什么问题并不是你真正需要尝试传达的错误代码。 500是通用的,很好理解,并且含义清楚,所以我只是使用它而不是过于复杂化。
解决您的具体问题。
一方面,502 Bad Gateway看起来像是用于" dumb"只是将请求转发给远程服务器的服务器,并将其响应返回给客户端,而不需要太多处理。
当然,这是所有惯例,但我在此分析中说你的理性正确。
另一方面,无法访问远程服务器听起来不像500内部服务器错误...更像是"远程服务器错误"。
我认为它仍然是内部服务器错误,只是由其他地方的远程服务器引起的内部服务器错误(这是一个详细说明您的用户可能不需要知道。)