假设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状态代码?
答案 0 :(得分:1)
使用REST,您必须始终利用响应中的状态代码来指示发生的情况。成功回复(状态代码2xx
和3xx
)或错误回复(4xx
和5xx
)就属于这种情况。此外,如果出现错误,如果特定状态代码过于通用(例如,对状态代码为400
或422
的特定内容字段进行数据验证),则可以返回其他提示以提供更多信息响应有效负载内的提示。后者的结构取决于你...你在第二个片段中使用的是完美的; - )
此链接(部分"错误处理")可以在此级别为您提供更多提示:https://templth.wordpress.com/2014/12/15/designing-a-web-api/。
希望它可以帮到你, 亨利