2009-07-03 45 views
11

我一直在寻找的REST API的像Netflix的http://developer.netflix.com/docs/REST_API_Reference#0_59705和Twitter的例子,他们似乎把错误信息在状态文本标头响应,而不是responseText的。我们正在开发一个内部的RESTful api,我正在争取发送自定义的statusText消息并忽略responseText。在REST服务上返回错误消息的最佳方法?

对于我们的应用程序的范围,当用户试图做的东西,他们不应该在我们返回的错误400,这将在UI为用户更新的唯一错误信息将被传递400.我认为这个消息应该作为修改后的状态文本发送,但其中一位工程师(对REST的了解比我少一些)争论将它发送到responseText中。

什么是最好的方法?

+0

这是一个重复的:http://stackoverflow.com/questions/942951/rest-api-error-return-good-practices等请参阅http://stackoverflow.com/search?q=[rest ] +错误。 – 2009-07-03 00:29:05

回答

9

我认为你是对的,一般的方法是使用内置到HTTP现有的错误机制。

在一般情况下,尝试,如果他们要求的东西,他们没有权限,返回403错误到你的错误映射到现有的HTTP错误,例如。

如果他们要求的东西不存在,返回404

  • 亚历
10

HTTP定义,你应该把一个描述性错误消息在响应实体主体,又名responseText的。

状态文本没有被任何客户机呈现或处理。

我会使用错误消息类型的状态文本,也就是400客户端错误,并且可以呈现给用户的问题描述的主体,无论客户端能够处理什么格式。

编辑:请注意,从那时起,存在一种新的标准化格式,以标准方式将错误详细信息传回给客户端,您可以在https://tools.ietf.org/html/rfc7807找到我想推荐的内容。

0

为您的回复选择适当的状态码非常重要,因为它是自我描述性消息的关键实现者。

的实体主体应该是资源的状态的表示,理想包含超链接到可用的下一状态在您的应用程序

1

根据HTTP规范(rfc2616):“HTTP状态代码是可扩展的”

但我不认为为每个不同的错误消息创建新的状态是正确的方法:

如果找不到符合您的要求的任何类别,请选择适当的HTTP状态(HTTP Status Code Definitions)创建自定义的(但我相信你会)并将错误消息放入HTTP响应主体中。

0

http状态代码很自我解释,应该这样使用。用验证错误返回200 OK是相当Soap-y和误导。任何REST客户端实现4xx和5xx错误都会进入错误块,并且如果您确实想要对非2xx响应使用响应主体,则实际上取决于具体的情况。

相关问题