我有一个JSON请求,我张贴到一个HTTP URL。
如果requestdresource字段存在,但“Roman”是这个字段的无效值,这应该被视为400吗?
[{requestedResource:"Roman"}]
这应该被视为400的“blah”字段不存在吗?
[{blah:"Roman"}]
我有一个JSON请求,我张贴到一个HTTP URL。
如果requestdresource字段存在,但“Roman”是这个字段的无效值,这应该被视为400吗?
[{requestedResource:"Roman"}]
这应该被视为400的“blah”字段不存在吗?
[{blah:"Roman"}]
当前回答
想想期望。
作为客户端应用程序,您希望知道服务器端是否出现了问题。如果服务器需要在blah缺失或requestedResource值不正确时抛出错误,那么400错误将是合适的。
其他回答
首先检查URL,它可能是错误的,如果是正确的,然后检查你正在发送的请求体,可能的原因是你正在发送的请求缺少正确的语法。
要详细说明,请检查请求字符串中的特殊字符。如果使用的是(特殊字符),则是此错误的根本原因。
尝试复制请求并分析每个标签数据。
想想期望。
作为客户端应用程序,您希望知道服务器端是否出现了问题。如果服务器需要在blah缺失或requestedResource值不正确时抛出错误,那么400错误将是合适的。
这两种情况都不是“语法畸形”。语义是错误的。因此,恕我直言,400是不合适的。相反,返回一个200和某种类型的错误对象,如{"error": {"message": "Unknown request keyword"}}或其他。
考虑客户机处理路径。语法错误(例如,无效的JSON)是程序逻辑中的错误,换句话说,是某种类型的错误,应该以类似403的方式进行相应的处理;换句话说,有不好的事情发生了。
另一方面,参数值中的错误是语义错误,可能是由于用户输入验证不当造成的。这不是一个HTTP错误(尽管我认为它可能是一个422)。处理路径会有所不同。
例如,在jQuery中,我不希望编写一个单独的错误处理程序来处理500和一些特定于应用程序的语义错误。其他框架,比如Ember,也把400秒和500秒的HTTP错误视为重大错误,要求程序员检测发生了什么,并根据它是否是“真正的”错误进行分支。
从w3.org
10.4.1 400个错误请求 由于格式错误,服务器无法理解请求 语法。客户端不应该重复请求 修改。
在我的情况下,这意味着我在json中提供的数据与db所需的数据不兼容,例如电子邮件地址已经添加到db,然后抛出代码400