小编典典

有效请求但空数据的正确 REST 响应代码是什么?

all

例如,您运行 GET 请求users/9但没有 ID 为 #9 的用户。哪个是最好的响应代码?

  • 200 好
  • 202 接受
  • 204 无内容
  • 400 错误请求
  • 404 未找到

阅读 103

收藏
2022-03-15

共1个答案

小编典典

TL;DR:使用404

博客评论摘要204

  1. 204 No Content作为浏览器的响应代码并不是非常有用(尽管根据 HTTP 规范,浏览器确实需要将其理解为“不要更改视图”响应代码)。
  2. 204 No Content __然而,对于可能想要指示成功而不必返回某些内容的 ajax Web 服务非常有用 (特别是在不需要反馈的情况下)DELETEPOST

因此,您的问题的答案是404在您的情况下使用。204是一个专门的响应代码,您不应该经常返回到浏览器以响应GET.

204比和更不合适的其他响应代码404

  1. 200应该与您成功获取的任何内容一起返回。当您获取的实体不存在时不合适。
  2. 202当服务器已开始处理对象但对象尚未完全准备好时使用。当然不是这里的情况。您尚未开始,也不会开始构建用户 9 以响应GET请求。这打破了各种规则。
  3. 400用于响应格式错误的 HTTP 请求(例如格式错误的 HTTP 标头、错误排序的段等)。这几乎肯定会由您使用的任何框架处理。除非您从头开始编写自己的服务器,否则您不必处理这个问题。 编辑 :较新的 RFC现在允许将 400 用于语义上无效的请求。

Wikipedia对 HTTP
状态码的描述
特别有帮助。您还可以
www.w3.org 上查看 HTTP/1.1 RFC2616
文档中的定义

2022-03-15