REST路由中的资源ID与有效负载中的ID不同时的HttpStatus

时间:2018-07-25 15:42:16

标签: rest api-design http-status-codes

哪种HTTP状态最适合拒绝路由中的ID与请求正文中包含的资源中的ID不匹配的(PUT)请求?

示例:

[HttpPut("/api/todos/{id}")]
public IActionResult Update(int id, TodoItem item) {
if (item.id != id) {
  throw new HttpException(4??);
}

1 个答案:

答案 0 :(得分:3)

409状态代码似乎是一个合理的选择:它用于指示请求与服务器上资源的当前状态冲突 。 URL和有效负载中的标识符之间的 mismatch 完全是冲突

响应应包括所有必要的信息,以便客户端识别冲突的来源,然后能够重新提交请求。要报告Web API中的问题,建议您检查RFC 7807


了解如何在409中定义RFC 7231状态代码:

  

6.5.8. 409 Conflict

     

409(冲突)状态码表示请求无法   由于与目标的当前状态冲突而完成   资源。此代码用于用户可能会   能够解决冲突并重新提交请求。服务器   应该生成一个有效载荷,该有效载荷应为用户提供足够的信息   识别冲突的根源。 [...]