我正在开发一个内部使用第 3 方 API 的 API。我的 API 响应取决于该第 3 方 API。当第 3 方 API 给出 500 内部服务器错误时,状态代码应该是什么,这个错误是意料之中的。
我读过一些关于它的文章,其中大多数建议不要故意在 API 响应中返回 5XX。我很困惑状态码应该是什么?因为我不想将它隐藏在 4XX 后面,而且根据文章,我无法决定这种情况是应该出现在预期情况下还是意外情况下? (我知道这种情况通常会发生)。
4XX 错误表示client 做错了。
5XX 错误表示 server 做错了什么。
在你的情况下,我会使用 502 - Bad Gateway 错误消息,如
External error: {error from 3rd party API}
如果 The error is expected as you mentioned,你应该能够知道错误的来源是什么,来自客户端的错误输入?如果是这样,可能是您在调用第三方 API 之前缺少数据验证步骤。
无论如何,正如@Justinas 所说,Http 返回代码非常简单。
如果您的 API 依赖于第三方 API,并且该 API 返回 500 内部服务器错误,则也可以从您的 API 返回 5xx 状态代码。但是,您不应故意从您的 API 返回 5xx 状态代码,因为这会产生误导并可能导致您的用户感到困惑。
相反,您应该考虑使用 5xx 范围内的状态代码来准确反映情况。例如,您可以返回 503 Service Unavailable 状态代码,这表明该服务由于维护或其他您无法控制的原因暂时不可用。或者,您可以返回 502 Bad Gateway 状态代码,表示服务器从上游服务器收到无效响应。
在任何一种情况下,重要的是向您的用户提供清晰且信息丰富的错误消息,解释情况以及他们可以采取的解决问题的任何步骤。这将有助于确保您的用户不会因错误而感到困惑或沮丧,并且将来更有可能继续使用您的 API。