标签: 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??); }
答案 0 :(得分:3)
409状态代码似乎是一个合理的选择:它用于指示请求与服务器上资源的当前状态冲突 。 URL和有效负载中的标识符之间的 mismatch 完全是冲突。
409
响应应包括所有必要的信息,以便客户端识别冲突的来源,然后能够重新提交请求。要报告Web API中的问题,建议您检查RFC 7807。
了解如何在409中定义RFC 7231状态代码:
6.5.8. 409 Conflict 409(冲突)状态码表示请求无法 由于与目标的当前状态冲突而完成 资源。此代码用于用户可能会 能够解决冲突并重新提交请求。服务器 应该生成一个有效载荷,该有效载荷应为用户提供足够的信息 识别冲突的根源。 [...]
6.5.8. 409 Conflict
409(冲突)状态码表示请求无法 由于与目标的当前状态冲突而完成 资源。此代码用于用户可能会 能够解决冲突并重新提交请求。服务器 应该生成一个有效载荷,该有效载荷应为用户提供足够的信息 识别冲突的根源。 [...]