【问题标题】:Should a REST API define an error response different from the successful response? [duplicate]REST API 是否应该定义不同于成功响应的错误响应? [复制]
【发布时间】:2020-12-01 10:48:16
【问题描述】:

API 的成功响应具有 json 格式(基于 avro 架构)。对于错误,是否应该为异常定义另一种格式(模式)?还是应该在成功的响应中包含错误部分?发生错误时,将其他部分留空并仅填充错误。

这更像是一个内部API,需要定义各种自定义异常消息。是否应该对所有此类应用程序错误使用相同的 HTTP 状态码?

这些决定如何影响 OPEN API (SWAGGER)?

【问题讨论】:

    标签: rest swagger http-status-codes


    【解决方案1】:

    HTTP 状态码属于通用transfer documents over a network 域。

    换句话说,您的 API 应该像任何其他网站或启用网络的文档存储一样响应。

    特定于您的域的信息属于响应正文。

    RFC 7807 定义了application/problem+json,这是一个用于描述问题的通用模式。当然,您不需要使用它,但采用标准化架构确实可以让您利用已经完成的支持它的工作。

    对于错误,是否应该为异常定义另一种格式(模式)?还是应该在成功的响应中包含错误部分?

    其中任何一个都可能是合理的,具体取决于您试图传达的信息。

    考虑如何在网络上执行此操作。我要求提供我的订单状态的 HTML 表示,但您的供应商有延迟。你需要给我一个完全不同的回复吗?对于像这样的简单情况,可能不会 - 您不太可能在这里遇到架构冲突,只是取决于订单状态的各种可选元素。

    另一方面,当您需要人工时,您可能需要不同的信息表达方式,而不是您希望由机器处理信息的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 2012-05-22
      • 2016-12-13
      相关资源
      最近更新 更多