You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

URL含数据库自动生成UUID且资源不存在时,PUT方法的RESTful正确行为?

处理PUT请求中不存在的自动生成UUID资源的RESTful方案

你的场景很明确:CRUD应用的书籍资源ID由数据库插入时自动生成UUID,当客户端发起PUT http://host/books/{数据库生成的UUID}请求,且路径中的UUID对应资源不存在时,正确的RESTful处理方式是返回404 Not Found状态码。

为什么选404?

404的语义就是“服务器无法找到请求的目标资源”,完全匹配当前场景——客户端请求的那个UUID对应的书籍根本不存在,服务器没有办法完成更新操作,用404告知客户端最直接准确。

为什么不选其他状态码?

  • 400 Bad Request:这个状态码用于请求本身存在问题的情况,比如请求格式错误、参数非法等,但这里客户端的请求格式和参数都是合法的,只是目标资源不存在,所以不适用。
  • 422 Unprocessable Entity:这个状态码针对的是请求语法正确,但语义上无法处理的情况(比如提交的书籍数据包含不符合业务规则的字段),和资源不存在的问题不相关,也不合适。

额外说明

如果客户端想要创建新的书籍资源,应该引导它使用POST请求发送到/books端点——这才是REST规范中用于创建新资源的正确方式,服务器会由数据库生成UUID,并返回新资源的URI给客户端。

内容的提问来源于stack exchange,提问作者Wieland Gmeiner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:40:02