我认为412(前提条件失败),但可能会有更好的标准?


当前回答

在我们的一个API项目中,我们决定将409状态设置为一些请求,当我们因为缺少参数而不能完全填充它时。

HTTP状态代码“409冲突”对我们来说是一个很好的尝试,因为它是定义 要求包含足够的信息以便用户识别 冲突的根源。

参考:w3.org/Protocols/

因此,在其他响应中,如400或404,我们选择409来强制检查请求中的一些注释,这有助于建立一个新的正确的请求。

无论如何,我们的案例是特殊的,因为如果请求不完全正确,我们需要发送一些数据,并且我们需要强制客户端查看消息并了解请求中的错误。

一般来说,如果我们只有一些缺失的参数,我们会选择一个400和一个包含缺失参数的数组。但是当我们需要发送更多的信息时,比如一个特定的案例消息,我们希望更确定客户端会处理它,我们就会发送409

其他回答

有人认为,应该使用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的。

在我们的一个API项目中,我们决定将409状态设置为一些请求,当我们因为缺少参数而不能完全填充它时。

HTTP状态代码“409冲突”对我们来说是一个很好的尝试,因为它是定义 要求包含足够的信息以便用户识别 冲突的根源。

参考:w3.org/Protocols/

因此,在其他响应中,如400或404,我们选择409来强制检查请求中的一些注释,这有助于建立一个新的正确的请求。

无论如何,我们的案例是特殊的,因为如果请求不完全正确,我们需要发送一些数据,并且我们需要强制客户端查看消息并了解请求中的错误。

一般来说,如果我们只有一些缺失的参数,我们会选择一个400和一个包含缺失参数的数组。但是当我们需要发送更多的信息时,比如一个特定的案例消息,我们希望更确定客户端会处理它,我们就会发送409

只要去浏览器设置>护盾>自动重定向AMP页面 禁用它,再试一次…

你可以发送一个400坏请求代码。它是一种更通用的4xx状态码,因此您可以使用它来表示您的意图:客户端正在发送一个请求,该请求缺少应用程序正确处理它所需的信息/参数。