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

时间:2018-09-29 08:04:55

标签: http http-status-codes

我们的API中有一条路由(被调用时)到达了另一个第三方API。

例如

HTTP-GET /account/1

这会从我们的数据库中以及从..例如..第三方API(例如Auth0 / Okta / SalesForce /其他)中返回一些数据。

现在,如果此第三方API调用由于任何原因失败(失败== 4 **,5 **或什至200 OK,但内容是一些错误消息),那么我应该将什么错误状态代码传递回给客户调用 my API?

最初,我在考虑一个HTTP-500-Server-Error,但是...现在我不太确定,因为如果我返回一个不错的错误消息,我可以可以防止该错误在服务器中发生给客户。因此,我想到了,返回一个HTTP-200-OK,其中包含下游问题/错误的某些键/值...但这确实是(em)确定的(双关语)。对我来说,HTTP-200-OK就像返回的答案真的还可以。

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

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

1 个答案:

答案 0 :(得分:2)

  

现在,如果此第三方API调用由于任何原因失败(失败== 4 **,5 **或什至200 OK,但内容是一些错误消息),那么我应该将什么错误状态代码传递回给客户调用 my API?

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

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