在远程服务器故障时使用哪个HTTP状态代码? 500或502?

时间:2018-04-30 13:29:45

标签: http http-status-codes

我有一个API,根据客户的POST请求:

  1. 解析客户的请求
  2. 处理请求中的数据
  3. 向远程服务器发送请求
  4. 从远程服务器接收响应
  5. 对回复中的数据做更多的事情
  6. 将数据保留在数据库中
  7. 向客户发送回复
  8. 换句话说,正常的网络服务器。

    如果远程服务器向我发送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 ...更像是“远程服务器错误”。

    我应该使用哪一个? 500502或其他?

1 个答案:

答案 0 :(得分:4)

我和500一起去。

这并不重要 - 两者都是5xx系列错误的一部分,意思是"我们搞砸了,而不是你" - 所以到底出了什么问题并不是你真正需要尝试传达的错误代码。 500是通用的,很好理解,并且含义清楚,所以我只是使用它而不是过于复杂化。

解决您的具体问题。

  

一方面,502 Bad Gateway看起来像是用于" dumb"只是将请求转发给远程服务器的服务器,并将其响应返回给客户端,而不需要太多处理。

当然,这是所有惯例,但我在此分析中说你的理性正确。

  

另一方面,无法访问远程服务器听起来不像500内部服务器错误...更像是"远程服务器错误"。

我认为它仍然是内部服务器错误,只是由其他地方的远程服务器引起的内部服务器错误(这是一个详细说明您的用户可能不需要知道。)