spec声明
502 Bad Gateway
服务器在充当网关或代理时,从尝试完成请求时访问的上游服务器收到无效响应。
假设我有一个"前端"提供HTML页面的服务器。此前端服务器对返回JSON的API服务器进行REST调用。像这样:
+--------+ +----------+ +-----+
| | start req -> | | -> | |
| client | | frontend | | api |
| | get resp <- | | <- | |
+--------+ +----------+ +-----+
如果API服务器将5xx返回给前端服务器,那么502是返回客户端的适当响应,还是500更适合?
答案 0 :(得分:1)
如果你拥有前端和API服务器,并且它们之间的区别对于客户端是不可见的,那么它们作为一个单元工作,你不应该使用代理响应代码。如果API服务器返回任何5xx代码,那么前端服务器最好返回500,这意味着&#34;我的系统遇到错误&#34;。
另一方面,如果API服务器是别人的,例如Facebook和你期望客户知道你正在代理Facebook的请求,它可能适合回应Facebook的响应代码。但是,通常最好使用500,即使Facebook返回502,因为来自它们的502意味着他们的下游服务器之一失败,但您对Facebook的请求是否成功。