在JSON Web服务中发送错误响应的最佳做法是什么?

时间:2012-02-04 14:38:17

标签: json web-services rest

在JSON Web服务中发送错误响应的最佳做法是什么?我已经看到它做了几种方式,想知道选择中是否有任何商定的标准或最佳实践。

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

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

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

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

2 个答案:

答案 0 :(得分:17)

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

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

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

答案 1 :(得分:3)

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

执行此操作不会使您的API RESTful,但不这样做肯定会使您的API RESTful。

错误的常用HTTP状态代码示例在Dropbox API reference中,查看每个方法下的“错误”部分,它们解释了您应该期望的错误代码以及相关含义是什么在那个特定的方法。