外部API关闭时REST API状态-最佳实践
我正在寻找有关从RESTAPI返回错误的良好实践的指导。我正在开发一个新的API,所以我可以向任何方向发展 在我的例子中,客户端调用我的API,该API在内部调用一些外部API。如果成功,没有问题,但是如果远端(外部云API)出现错误响应,我不确定这类服务的行业标准是什么。我目前正在考虑返回200 OK,然后返回一个json负载,其中详细说明了外部API错误外部API关闭时REST API状态-最佳实践,rest,web-services,http,Rest,Web Services,Http,我正在寻找有关从RESTAPI返回错误的良好实践的指导。我正在开发一个新的API,所以我可以向任何方向发展 在我的例子中,客户端调用我的API,该API在内部调用一些外部API。如果成功,没有问题,但是如果远端(外部云API)出现错误响应,我不确定这类服务的行业标准是什么。我目前正在考虑返回200 OK,然后返回一个json负载,其中详细说明了外部API错误 那么,行业建议是什么?良好实践(请解释原因!)以及,从客户机的角度来看,REST API中的何种错误处理方式使客户机代码的使用更加方便?您
那么,行业建议是什么?良好实践(请解释原因!)以及,从客户机的角度来看,REST API中的何种错误处理方式使客户机代码的使用更加方便?您所问的故障是在服务本身的内部发生的,尽管它具有外部依赖性,因此5XX状态代码范围是正确的选择。503服务不可用看起来非常适合您描述的情况 5XX代码用于告诉客户端,即使请求很好,服务器在满足请求时也出现了某种问题。另一方面, 4XX代码用于告诉客户端它在请求中做了一些错误的事情(并且服务器很好,谢谢)。
解释4XX和5XX代码的不同用途。您所询问的故障是发生在服务本身内部的故障,尽管它具有外部依赖性,因此状态代码范围是正确的选择。503服务不可用看起来非常适合您描述的情况 5XX代码用于告诉客户端,即使请求很好,服务器在满足请求时也出现了某种问题。另一方面, 4XX代码用于告诉客户端它在请求中做了一些错误的事情(并且服务器很好,谢谢)。
解释4XX和5XX代码的不同用途。我们的同事已经提供了有关HTTP状态代码的链接/解释,因此您应该了解它们并找到最适合您的代码 假设你已经学会了状态码,我会更专注于什么会影响你的决定 基本上,您应该了解当客户机调用“您的”API时触发的流的业务含义。客户机对您正在使用的外部云API一无所知,也不关心它是否工作,客户机与您的应用程序一起工作 如果是这样的话,当远程系统返回某种错误时(是的,不同的错误状态应该会让您知道远程系统出了什么问题),如何处理此错误是您的业务决策,根据此决策,您可能希望在与客户机的交互中“表现”不同 以下是一些例子:
总之,正如您所看到的,HTTP返回码只是一个指示符,但是,如何组织与客户端的互连过程取决于您,相关的HTTP状态将从您的决定中衍生出来。我们的同事已经提供了有关HTTP状态代码的链接/解释,因此您应该了解它们并找到最适合您的情况的链接/解释 假设你已经学会了状态码,我会更专注于什么会影响你的决定 基本上,你应该了解什么是业务含义
{
"error_code": 1234,
"description": "X happened with Y because of Z.",
"learn_more": "https://dev.my.app/errors/1234",
"id": "90daa63b-f5ac-4c33-97d5-0801ade75a5d"
}