【发布时间】:2010-02-03 09:36:20
【问题描述】:
当使用 PUT 方法更新资源并且请求包含一些会使域规则无效的数据时,返回的最合适的响应代码是什么?
例如,客户资源必须指定一个名称。如果代理尝试在不提供 name 的情况下发出 PUT,我不想更新资源,我想告诉调用者他们需要提供 name .
什么 HTTP 响应代码?
【问题讨论】:
标签: rest
当使用 PUT 方法更新资源并且请求包含一些会使域规则无效的数据时,返回的最合适的响应代码是什么?
例如,客户资源必须指定一个名称。如果代理尝试在不提供 name 的情况下发出 PUT,我不想更新资源,我想告诉调用者他们需要提供 name .
什么 HTTP 响应代码?
【问题讨论】:
标签: rest
422 怎么样?
“422(Unprocessable Entity)状态码表示服务器理解请求实体的内容类型(因此415(Unsupported Media Type)状态码是不合适的),并且请求实体的语法是正确的(因此400 (Bad Request) 状态码不合适)但无法处理包含的指令。例如,如果 XML 请求正文包含格式正确(即语法正确)但语义错误的 XML 指令,则可能会发生此错误情况。 "
【讨论】:
本例中响应码与http方法无关。您应该返回与 POST 请求相同的状态代码。我会说你应该使用400 或409(注意:请参阅 cmets 中关于两者区别的进一步讨论)。
【讨论】:
409 可能是最正确的,但X00 响应也可以被视为一个类别中的通用响应。所以400 不如409 具体。这不是它们的定义方式,而是事实上的解释。
409 吗?该规范以并发冲突为例,但我认为它只是更广泛类别的一个示例。