我正在使用基于REST的API构建一个应用程序,并且已经达到了为每个请求指定状态代码的程度.
对于未通过验证的请求或请求尝试在我的数据库中添加副本的情况,我应该发送什么状态代码?
我查看了http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,但似乎没有一个是正确的.
发送状态代码时是否有通用做法?
的HTTP/1.1规范(RFC 2616)具有以下对的意义上说的状态代码400,错误的请求(§10.4.1) :
由于语法格式错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求.
现在,在一些基于HTTP的API中似乎存在一种普遍的做法,即使用400来表示请求的逻辑错误而不是语法错误.我的猜测是API这样做是为了区分400(客户端引发)和500(服务器引发).使用400表示非语法错误是否可接受或不正确?如果可以接受,RFC 2616上是否有注释参考,可以更深入地了解400的预期用途?
例子: