作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设RESTful调用需要表明请求已被成功接受,但内容信息与现有数据冲突。
例如,尝试插入一个新用户,响应需要告诉用户存在,我正在寻找一种在 RESTful 中执行此操作的正确方法。我的第一个选择是使用返回代码作为 200 状态,但内容说请求返回失败及其描述。
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
.
.
{"status":"failure", "message":"User exists already"}
另一种选择是将 HTTP 响应代码更改为 200 状态以外的其他内容,并且仅在 JSON 对象中注入(inject)描述。
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
的特定内容字段上的数据验证),您可以返回额外的提示以在响应有效负载中提供更多提示。后者的结构取决于您...您在第二个代码段中使用的内容非常完美;-)
此链接(“错误处理”部分)可以在此级别为您提供更多提示:https://templth.wordpress.com/2014/12/15/designing-a-web-api/ .
希望对你有帮助,蒂埃里
关于rest - RESTful 调用应如何返回失败消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29196678/
我是一名优秀的程序员,十分优秀!