我认为412(前提条件失败),但可能会有更好的标准?
当前回答
我经常使用403 Forbidden错误。理由是请求被理解了,但我不会按照要求去做(因为事情是错误的)。响应实体解释了错误所在,因此如果响应是HTML页面,错误消息就会出现在页面中。如果是JSON或XML响应,错误信息就在里面。
从rfc2616:
10.4.4禁止403 服务器理解请求,但拒绝执行。 授权没有帮助,请求不应该重复。 如果请求方法不是HEAD,而服务器希望 公开为什么要求没有得到满足,它应该描述 实体拒绝的原因。如果服务器不希望这样做 使此信息对客户机可用,即状态代码404 (Not Found)可以代替。
其他回答
根据规范,状态422似乎最合适。
The 422 (Unprocessable Entity) status code means the server understands the content type of the request entity (hence a 415(Unsupported Media Type) status code is inappropriate), and the syntax of the request entity is correct (thus a 400 (Bad Request) status code is inappropriate) but was unable to process the contained instructions. For example, this error condition may occur if an XML request body contains well-formed (i.e., syntactically correct), but semantically erroneous, XML instructions.
他们指出,格式错误的xml是错误语法的一个例子(需要400)。格式错误的查询字符串似乎与此类似,因此400似乎不适合缺少参数的格式良好的查询字符串。
注意:因为上面的RFC是关于WebDAV的,所以可能会有一种误解,认为422和其他一些代码只能在WebDAV的上下文中使用,而在WebDAV之外使用它们是“非标准的”。但这仅仅意味着这些状态码是在这个RFC上下文中引入的。事实上,这些定义的措辞都是经过精心选择的,不是专门针对WebDAV的。
有人认为,应该使用404 Not Found,因为无法找到指定的资源。
你可以发送一个400坏请求代码。它是一种更通用的4xx状态码,因此您可以使用它来表示您的意图:客户端正在发送一个请求,该请求缺少应用程序正确处理它所需的信息/参数。
我通常去422(不可处理的实体),如果所需的参数中的某些东西不匹配API端点所需的(如太短的密码),但对于缺少的参数,我会去406(不可接受)。
只要去浏览器设置>护盾>自动重定向AMP页面 禁用它,再试一次…
推荐文章
- Python请求发送参数数据
- 如何使用Express.js指定HTTP错误码?
- 编排microservices
- 如何使HTTP请求在PHP和不等待响应
- PATCH和PUT请求的主要区别是什么?
- 我可以把我所有的http://链接都改成//吗?
- URL为AJAX请求编码一个jQuery字符串
- 编译System.Net.HttpClient的查询字符串
- 摘要认证和基本认证的区别是什么?
- Axios -删除请求与请求体和头?
- 如何在http获取请求设置报头?
- 从Web Api控制器返回http状态代码
- 如何使用Ruby on Rails进行HTTP请求?
- REST API最佳实践:查询字符串中的参数vs请求体中的参数
- Express.js中的res.send和res.json的区别