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

Web API合法请求无数据时:返回NotFound()还是NoContent()?

Web API:NotFound() 与 NoContent() 的选择

你的理解有偏差,NotFound()(对应HTTP 404状态码)并非只用于错误请求,它和NoContent()(HTTP 204)的适用场景有明确区别:

  • NoContent()(204):核心语义是「请求成功处理,且服务器无实体内容需要返回」。它适合的场景是更新、删除类操作——比如你成功删除了一条数据,或者更新数据后无需返回更新后的内容,这时候用204才合理。如果是查询请求,哪怕没找到数据,返回204也不符合语义,因为查询的核心目的是获取数据,空结果和「无内容返回」是完全不同的概念。

  • NotFound()(404):核心语义是「请求的目标资源不存在」。当你通过ID查询某个具体资源(比如GET /api/orders/1001,但ID为1001的订单根本不存在),这时请求本身是合法的(参数格式正确、权限没问题),但目标资源确实不存在,就该返回404。要注意:错误请求对应的是400(Bad Request),比如参数格式错误、缺少必填项这类情况,和404的场景完全不同。

额外补充:如果是查询列表但结果为空(比如GET /api/users?gender=unknown,没有符合条件的用户),通常返回200 OK,同时返回空数组即可,不用204或404——因为列表这个资源本身是存在的,只是没有匹配的条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:50:23