我认为412(前提条件失败),但可能会有更好的标准?
当前回答
在我们的一个API项目中,我们决定将409状态设置为一些请求,当我们因为缺少参数而不能完全填充它时。
HTTP状态代码“409冲突”对我们来说是一个很好的尝试,因为它是定义 要求包含足够的信息以便用户识别 冲突的根源。
参考:w3.org/Protocols/
因此,在其他响应中,如400或404,我们选择409来强制检查请求中的一些注释,这有助于建立一个新的正确的请求。
无论如何,我们的案例是特殊的,因为如果请求不完全正确,我们需要发送一些数据,并且我们需要强制客户端查看消息并了解请求中的错误。
一般来说,如果我们只有一些缺失的参数,我们会选择一个400和一个包含缺失参数的数组。但是当我们需要发送更多的信息时,比如一个特定的案例消息,我们希望更确定客户端会处理它,我们就会发送409
其他回答
对于那些感兴趣的人,Spring MVC(3。至少X)在这种情况下返回400,这对我来说似乎是错误的。
我测试了几个谷歌url (accounts.google.com),并删除了所需的参数,在这种情况下,它们通常返回404。
我会复制谷歌。
只要去浏览器设置>护盾>自动重定向AMP页面 禁用它,再试一次…
有人认为,应该使用404 Not Found,因为无法找到指定的资源。
当使用webHttpBinding时,. net中的WCF API通过返回一个HTTP 404“Endpoint Not Found”错误来处理丢失的参数。
如果考虑web服务方法名及其参数签名,404 Not Found是有意义的。也就是说,如果您公开一个web服务方法LoginUser(字符串,字符串),并且请求LoginUser(字符串),则不会找到后者。
基本上,这意味着无法找到您正在调用的web服务方法以及您指定的参数签名。
10.4.5 404未找到 服务器没有发现任何与Request-URI匹配的内容。没有 说明这种情况是暂时的还是 永久性的。
正如Gert所建议的那样,400 Bad Request仍然是一个有效的响应代码,但我认为它通常用于指示较低级别的问题。它很容易被解释为一个格式错误的HTTP请求,可能缺少或无效的HTTP头,或类似的情况。
10.4.1 400个错误请求 由于格式错误,服务器无法理解请求 语法。客户端不应该重复请求 修改。
我通常去422(不可处理的实体),如果所需的参数中的某些东西不匹配API端点所需的(如太短的密码),但对于缺少的参数,我会去406(不可接受)。
推荐文章
- 什么是HTTP“主机”报头?
- 哪个HTTP状态代码表示“尚未准备好,稍后再试”?
- 如何阻止恶意代码欺骗“Origin”报头来利用CORS?
- 为什么说“HTTP是无状态协议”?
- 我需要HTTP GET请求的内容类型报头吗?
- 如何让Chrome允许混合内容?
- 正确的方式删除cookies服务器端
- REST DELETE真的是幂等的吗?
- 了解Chrome网络日志“停滞”状态
- 用户代理字符串可以有多大?
- 什么是接受* HTTP报头q=0.5 ?
- HTTP状态码200(缓存)和状态码304之间有什么区别?
- HTTP POST返回错误:417“期望失败。”
- 什么是HTTP中的“406-不可接受的响应”?
- 最好的轻量级web服务器(只有静态内容)的Windows