当前位置: 首页 > 知识库问答 >
问题:

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

闾丘高峰
2023-03-14

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

  • 200确定
  • 202已接受
  • 204无内容
  • 400错误请求
  • 找不到404

共有1个答案

帅雅逸
2023-03-14

TL;DR:使用404

看这个博客。它很好地解释了这一点。

博客对204的评论摘要:

  1. 204 No content作为浏览器的响应代码并不十分有用(尽管根据HTTP规范,浏览器需要将其理解为“不更改视图”响应html" target="_blank">代码)。
  2. 204No content对于ajax web服务非常有用,因为ajax web服务可能希望在不返回内容的情况下指示成功。(特别是在不需要反馈的deletepost等情况下)。

因此,对您的问题的答案是在您的情况下使用404204是一个专用的响应代码,您不应该经常在响应Get时返回到浏览器。

204404更不合适的其他响应代码:

  1. 200应与您成功获取的内容一起返回。当您要获取的实体不存在时不合适。
  2. 202在服务器已开始处理对象但对象尚未完全就绪时使用。这里肯定不是这样。您还没有开始,也不会开始响应get请求构造用户9。这违反了各种规则。
  3. 400用于响应格式不正确的HTTP请求(例如,格式错误的HTTP头、顺序错误的段等)。几乎可以肯定,您使用的任何框架都可以处理这一问题。除非您从头开始编写自己的服务器,否则您不必处理这些问题。编辑:较新的RFC现在允许400用于语义无效的请求。

维基百科对HTTP状态代码的描述特别有帮助。您还可以在www.w3.org上看到HTTP/1.1RFC2616文档中的定义

 类似资料:
  • 什么是REST API响应结构和布局的最佳实践? Scrath示例: 成功回应: 失败响应:

  • 假设您希望通过调用到来获取用户列表,但当前该表被截断,因此没有用户。对于这种情况,正确的反应是什么:或?

  • 我想在Spring中创建一个符合REST的endpoint。endpoint应该允许分页。 请求非常简单,是否访问url/资源?页码=1 我发现了两种返回数据的大方法: 返回包含以下内容的自定义对象: 此方法的问题是它不再返回资源,而是返回资源的包装器。 这解决了资源问题,但它使endpoint更难使用,这是违反直觉的,因为它也需要额外的工作来实现。 我想知道,什么标准被更广泛地使用,为什么?对此

  • 我最近参加了一个新项目。在这个项目中,所有正在使用的API总是返回状态代码200。即使响应应该是400或404,API也会返回状态代码200。 我问API为什么不返回其他响应代码,程序员告诉我他们不使用响应代码。他们把信息放在身体里。 例如,缺少一些必填字段,它们返回响应状态代码200,但正文返回如下 如果未经授权的用户试图访问,状态代码为200,身体像这样返回 我以前做的是非常不同的,我总是通过

  • 我一直在使用响应模板来提供动态响应,因为所有请求和查询参数都与该请求本身相关联。但是,我想使用多个参数发出 POST 请求,然后通过使用响应模板在存根 GET 方法的正文响应中使用这些参数。这在电线中可以做些什么吗?任何输入都非常感谢,谢谢!

  • 请问:Module在js中是什么? 我打印: 1.请问一下,这个Module代表是什么呢?是属于js的对象?还是属于typescript的? 2.Module是一个数据类型的吗?