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

标签 http http-status-codes

我们的 API 中有一个路由(在调用时)会访问另一个第 3 方 API。

例如

HTTP-GET/account/1

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

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

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

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

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

最佳答案

Now, if this 3rd party api call fails for any reason (fails == 4**, 5** or even a 200 OK but the content is some error message) then what error status code should I pass back to the client calling my API?

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

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

关于http - 当依赖项/下游(如第 3 方 API)失败时使用什么 HTTP 状态代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52566434/

相关文章:

html - 有关 Ruby 中 HTTP 拦截代理的帮助吗?

java - 使用 IE8 时的 GWT 问题

java - Android SDK 通过HTTP get获取图片

javascript - Angular : Pass params to $http. 得到

rest - API响应部分失败并要求客户端重试的行业实践

http - HTTP 状态代码的名称是否重要

服务器过载的 HTTP 状态代码

error-handling - IIS 7.5 : sending http status code 422 with custom errors on

javascript - 提供 gzip 文件时使用什么 'Content-Type' header ?

java - java代码中的警告问题