RESTful 应如何调用 return 以获取失败消息?

How should RESTful calls return for failure messages?

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

例如,尝试插入一个新用户,响应需要告诉用户存在,我正在 RESTful 中寻找合适的方法。 我的第一个选择是使用 return 代码作为 200 状态,但内容说请求被 return 编辑为失败及其描述。

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 状态代码以进行异常处理?

使用 REST,您必须始终在响应中利用状态代码来指示发生了什么。这是成功响应(状态代码 2xx3xx)或错误响应(4xx5xx)的情况。此外,在出现错误的情况下,如果特定状态代码过于通用(例如在状态代码为 400422 的特定内容字段上进行数据验证),您可以 return 附加提示在响应有效负载中提供更多提示。后者的结构取决于您...您在第二个代码段中使用的内容非常完美;-)

此 link(第 "Error handling" 部分)可以在该级别为您提供更多提示:https://templth.wordpress.com/2014/12/15/designing-a-web-api/

希望对你有帮助, 蒂埃里