在JSON Web服务中发送错误响应的最佳实践是什么?我已经看到了几种方法,想知道在这些选择中是否有任何商定的标准或最佳实践。
我见过这样的情况,响应包括成功或失败的指示,以及要返回的数据或适当的错误消息,例如
[{'success':true, 'data':{...}]
[{'success':false, 'data':{'message':'error'}]
但我也看到过这样的例子,JSON对象只包含数据,服务使用正常的HTTP错误代码来指示问题(403、404、500等)(这就是Twitter API的工作方式)。
有没有一种“正确”的方法来做到这一点,或者这只是一个风格问题?后一种方法更“REST式”吗?
2条答案
按热度按时间rxztt3cl1#
在“RESTful”方法中,主要错误响应由适当的状态代码(4xx/5xx)指示。
您的消息应提供有关如何从错误中恢复的其他特定于应用程序的提示。这可能包括已发生错误的可读表示形式或某种技术性更强的指示符(即提供Exception类名)。
为了通用,请保持错误消息的固定语法。这样可以在不破坏客户端的情况下引入新的错误消息。
0vvn1miw2#
使用适当的HTTP代码,并把你现在称之为“data”的内容作为响应的主体,这是让API用户意识到错误的唯一正确的RESTful方法。
仅仅这样做不会使您的API具有REST风格,但不这样做肯定会使您的API * 不 * 具有REST风格。
Dropbox v1 API reference中有一个很好使用的HTTP错误状态代码的例子,请查看每个方法下的“Errors”部分,它们解释了您应该预期的错误代码以及该特定方法中的相关含义。