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

REST应用请求不存在资源:返回404还是200带{"data":null}?

该返回404还是200带{"data": null}?

这确实是REST API设计里很容易纠结的问题,结合你提到的Ember Data实践和JSON API规范,我来拆解一下两种方案的逻辑:

从JSON API规范的角度看

JSON API明确规定:

Primary data MUST be either: a single resource object, a single resource identifier object, null, or an array of these.

所以当请求的单个资源不存在时,返回状态码200并携带{"data": null}是完全符合规范的——null是允许的主数据类型之一,这种方式能保持响应格式的一致性,不会因为资源不存在就打破API的返回结构。

从Ember Data的实践角度看

你倾向返回404的想法非常合理,因为Ember Data对HTTP状态码的错误处理有一套成熟的机制:

  • 当API返回404时,Ember Data会直接触发模型查找失败的钩子(比如adapterError),前端可以很自然地捕获这个状态,跳转到404页面或者显示资源不存在的提示。
  • 如果返回200带null,前端需要额外在业务逻辑里判断data是否为null,再做对应的处理,反而增加了不必要的代码复杂度,也不符合前端框架对错误状态的常规处理习惯。

给你的建议

  • 如果你的API需要严格遵循JSON API规范,且前端团队已经做好了处理data: null的准备,那么返回200 + {"data": null}是合规的选择。
  • 如果你主要配合Ember Data这类前端框架开发,更推荐返回404状态码——框架原生的错误处理流程能让前端开发更顺畅,也更符合HTTP状态码的语义(404本身就是用来表示“请求的资源不存在”)。
  • 最重要的是保持一致性:不管选哪种方案,所有“资源不存在”的场景都统一处理,避免出现有的返回404、有的返回200带null的混乱情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:50:54