问题描述
API的成功响应具有json格式(基于avro模式)。对于错误,是否应为异常定义另一种格式(模式)?还是成功的响应应该包括错误部分?发生错误时,请将其他部分留空并仅填充错误。
这更多是内部API,需要定义各种自定义异常消息。对于所有此类应用程序错误,是否应使用相同的HTTP状态代码?
这些决定如何影响OPEN API(SWAGGER)?
解决方法
HTTP状态代码属于通用transfer documents over a network域。
换句话说,您的API应该像其他任何网站或启用Web的文档存储一样响应。
特定于您域的信息属于响应的正文。
RFC 7807定义application/problem+json
,这是用于描述问题的通用模式。当然,您不需要使用它,但是采用标准化架构确实可以使您充分利用支持它的工作。
对于错误,是否应为异常定义另一种格式(模式)?还是成功的响应应该包括错误部分?
根据您要传达的信息,这两种方法都是合理的。
考虑如何在网络上进行操作。我要求提供订单状态的HTML表示,但是您的供应商有所延迟。您需要给我一个完全不同的回复吗?对于像这样的简单情况,可能不会-您在这里不太可能发生架构冲突,只是取决于订单状态的各种可选元素。
另一方面,与需要机器处理信息的情况相比,当需要人工操作时,您可能需要不同的信息表达方式。