当依赖项/下游(如 3rd 方 API)失败时要使用什么 HTTP 状态代码?

Pur*_*ome 5 http http-status-codes

我们的 API 中有一个路由(当被调用时)访问另一个 3rd 方 API。

例如

HTTP-GET /account/1

这会从我们的数据库和.. 说.. 像 Auth0/Okta/SalesForce/whatever 这样的 3rd 方 api 返回一些数据。

现在,如果这个第 3 方 api 调用因任何原因失败(失败 == 4**、5** 甚至 200 OK 但内容是一些错误消息),那么我应该将什么错误状态代码传回给调用的客户端的客户端API?

最初我在想一个HTTP-500-Server-Error但是...我现在不太确定,因为如果我向客户端返回一个很好的错误消息,我可以防止这个错误发生在服务器中。于是我想,返回一个HTTP-200-OK包含下游问题/错误的一些键/值的 ...... 但这真的可以吗(双关语)。对我来说,HTTP-200-OK就像返回的答案真的很好。

所以我不确定人们在这种情况下会做什么。

我觉得这HTTP-500是针对发生但尚未真正处理和/或考虑的错误。

cas*_*lin 4

现在,如果这个第 3 方 api 调用因任何原因失败(失败 == 4**、5** 甚至 200 OK,但内容是一些错误消息),那么我应该将什么错误状态代码传递回调用我的客户端API?

API 应该从消费者的角度进行设计。在大多数情况下,API 使用者不会关心请求是由他们向其发出请求的服务器还是由下游服务器来满足。

如果对下游服务器的请求阻止您的服务器满足客户端请求,您可以选择500503。或者,您可以返回一些缓存数据(如果有)并返回2xx状态代码。