rgu*_*aug 25 xml rest http-status-codes http-status-code-400 restful-architecture
我有一个像sales/customers/{customerno}这样的资源.如果客户端向此资源发送PUT请求,则如果实体主体中的xml无效,则返回400 - Bad请求.但是,如果xml有效,但xml的内容无效,该怎么办?比如说客户端正在尝试更新客户PostCode并提供无效的PostCode.返回400是否正确 - 在这种情况下是错误的请求,还是我应该使用的另一个http代码?
jmo*_*253 31
400错误请求: 由于语法错误,无法满足请求.
在这种情况下,您的客户端向您发送了一个XML负载,该负载具有无效的邮政编码,这是一种无效的语法形式; 因此,发送400 Bad Request是在这种情况下返回的相应错误代码.
此外,维基百科引用RFC-4918作为该主题的资源.从本文档中,您将找到以下信息:
服务器可以拒绝可疑请求(即使它们由格式良好的XML组成),例如,400(错误请求)状态代码和解释问题的可选响应主体.
由于您的请求格式正确(XML不错,它只包含语义上不正确的信息),您可以拒绝状态代码为400的内容.这个词*may*
表明还有其他选项.
虽然您可能想要使用状态代码422,但在这种情况下这是不正确的,因为无效的邮政编码不符合语义错误的标准.参见下文...
来自维基百科:
422 Unprocessable Entity(WebDAV; RFC 4918):请求格式正确,但由于语义错误而无法遵循.
此外,以下是一些有助于解释状态代码422的定义:
语法错误在解析输入代码期间发生,并且由语法错误的语句引起.典型错误可能是输入中的非法字符,缺少运算符,连续两个运算符,同一行上的两个语句,没有中间分号,括号不平衡,保留字放错位置等.
在将代码解析为语法正确之后,在代码执行期间会发生语义错误.这些不必与陈述如何构建,而是与它们的含义有关.诸如不正确的变量类型或大小,不存在的变量,超出范围的下标等等是语义错误.
您的无效邮政编码既不是语法错误也不是语义错误; 因此,排除状态码422作为选项是合理的.
要回答您的问题,状态代码400是合适的; 但是,您可能还有其他选择.
归档时间: |
|
查看次数: |
35431 次 |
最近记录: |