【问题标题】:What are the best practices for sending error responses in JSON web services?在 JSON Web 服务中发送错误响应的最佳实践是什么?
【发布时间】:2012-02-04 14:38:17
【问题描述】:

在 JSON Web 服务中发送错误响应的最佳做法是什么?我已经看到它以多种方式完成,并想知道在这些选择中是否有任何公认的标准或最佳实践。

我已经看到它的响应包括成功或失败的指示以及要返回的数据或合适的错误消息,例如

[{'success':true, 'data':{...}]
[{'success':false, 'data':{'message':'error'}]

但我也看到了 JSON 对象仅包含数据的示例,并且服务使用正常的 HTTP 错误代码来指示问题(403、404、500 等)。 (这就是 Twitter API 的做法。)

是否有“正确”的方式来做到这一点,还是只是风格问题?后一种方法是否更“RESTful”?

【问题讨论】:

    标签: json web-services rest


    【解决方案1】:

    在“RESTful”方法中,主要错误响应由适当的状态代码 (4xx/5xx) 指示。

    您的消息应提供有关如何从错误中恢复的附加的、特定于应用程序的提示。这可能包括已发生错误的人类可读表示或某种更具技术性的指标(即提供异常类名称)。

    为了通用,请保持错误消息的修复语法。这允许您在不破坏客户端的情况下引入新的错误消息。

    【讨论】:

    【解决方案2】:

    使用适当的 HTTP 代码并将您现在称为“数据”的内容作为响应的主体。这是使 API 用户意识到错误的唯一正确的 RESTful 方式。

    这样做不会使您的 API 成为 RESTful,但不这样做肯定会使您的 API RESTful。

    Dropbox API reference 中有一个常用的错误 HTTP 状态代码示例,请查看每种方法下的“错误”部分,它们解释了您应该预期哪些错误代码以及其中的相关含义是什么具体方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多