RESTful调用应如何返回失败消息?

时间:2015-03-22 16:11:29

标签: rest http

假设RESTful调用需要指示请求已成功接受,但内容信息与现有数据冲突。

例如,尝试插入新用户,并且响应需要告诉用户存在,并且我正在寻找在RESTful中执行此操作的正确方法。 我的第一个选项是使用返回码作为200状态,但内容表示请求将作为失败及其描述返回。

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
.
.

{"status":"failure", "message":"User exists already"}

另一种选择是将HTTP响应代码更改为200状态之外的其他选项,并仅在JSON对象中注入描述。

HTTP/1.1 409 Conflict
Content-Type: application/json; charset=utf-8
.
.

{"message":"User exists already"}

为了概括这个问题,RESTful应该是面向JSON内容还是面向异常处理的HTTP状态代码?

1 个答案:

答案 0 :(得分:1)

使用REST,您必须始终利用响应中的状态代码来指示发生的情况。成功回复(状态代码2xx3xx)或错误回复(4xx5xx)就属于这种情况。此外,如果出现错误,如果特定状态代码过于通用(例如,对状态代码为400422的特定内容字段进行数据验证),则可以返回其他提示以提供更多信息响应有效负载内的提示。后者的结构取决于你...你在第二个片段中使用的是完美的; - )

此链接(部分"错误处理")可以在此级别为您提供更多提示:https://templth.wordpress.com/2014/12/15/designing-a-web-api/

希望它可以帮到你, 亨利