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,您必须始终在响应中利用状态代码来指示发生了什么。这是成功响应(状态代码 2xx
和 3xx
)或错误响应(4xx
和 5xx
)的情况。此外,在出现错误的情况下,如果特定状态代码过于通用(例如在状态代码为 400
或 422
的特定内容字段上进行数据验证),您可以 return 附加提示在响应有效负载中提供更多提示。后者的结构取决于您...您在第二个代码段中使用的内容非常完美;-)
此 link(第 "Error handling" 部分)可以在该级别为您提供更多提示:https://templth.wordpress.com/2014/12/15/designing-a-web-api/。
希望对你有帮助,
蒂埃里
假设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,您必须始终在响应中利用状态代码来指示发生了什么。这是成功响应(状态代码 2xx
和 3xx
)或错误响应(4xx
和 5xx
)的情况。此外,在出现错误的情况下,如果特定状态代码过于通用(例如在状态代码为 400
或 422
的特定内容字段上进行数据验证),您可以 return 附加提示在响应有效负载中提供更多提示。后者的结构取决于您...您在第二个代码段中使用的内容非常完美;-)
此 link(第 "Error handling" 部分)可以在该级别为您提供更多提示:https://templth.wordpress.com/2014/12/15/designing-a-web-api/。
希望对你有帮助, 蒂埃里