代码之家  ›  专栏  ›  技术社区  ›  Felix K.

如果REST路由中的资源id与负载中的id不同,则为HttpStatus

  •  1
  • Felix K.  · 技术社区  · 6 年前

    当路由中的id与请求正文中包含的资源中的id不匹配时,哪个http状态最适合拒绝(PUT)请求?

    例子:

    [HttpPut("/api/todos/{id}")]
    public IActionResult Update(int id, TodoItem item) {
    if (item.id != id) {
      throw new HttpException(4??);
    }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   cassiomolin    6 年前

    这个 409 状态代码似乎是 合理选择 :用于指示请求 冲突 服务器上资源的当前状态。这个 不匹配 在URL和有效负载中的标识符之间 冲突 .

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


    看看 四百零九 状态代码在 RFC 7231 :

    6.5.8. 409 Conflict

    这个 四百零九 (冲突)状态代码指示请求无法 由于与目标的当前状态冲突而完成 资源。此代码用于用户可能 能够解决冲突并重新提交请求。服务器 应该为用户生成包含足够信息的有效负载 找出冲突的根源。[...]