【问题标题】:post with no response body, which response code is better 201 or 204?没有响应正文的帖子,哪个响应代码更好 201 或 204?
【发布时间】:2022-04-13 22:20:32
【问题描述】:

为了发出 HTTP 请求,我们使用节点的restful.js

它正在发出警告:

您应该返回一个带有空正文的 204 状态代码。

我们的请求是一个 POST(这显然是创建一个资源)。

请求成功。响应正文为空。我们的响应代码是 201。

我们应该返回 201(已创建)还是 204(无内容)响应代码?

restful.js 是不是太热心了?

【问题讨论】:

    标签: node.js rest http restful.js


    【解决方案1】:

    实际选择的答案没有考虑到响应正文将为空

    响应代码201 Created不仅表示“已创建”,还表示“新资源在消息正文中返回”。

    RFC 7231 中代码 201 的描述:https://httpwg.org/specs/rfc7231.html#status.201

    因此,对于空正文 204 No Content 的成功响应似乎更适合。

    【讨论】:

    • 是否有一些“官方”文档。强制或暗示 201 是不应与空正文一起使用的代码,只能与 Location 标头一起使用?
    • @Vegard 我已经编辑了答案并提供了 RFC 的链接。
    • 感谢您的更新,但我在文本中没有看到任何内容说它应该有一个正文,而是:“...响应负载通常 描述并链接到创建的资源..”。我觉得这表明它可以有一个身体,但不是应该的吗?还是我错过了什么?
    【解决方案2】:

    这取决于您正在执行的操作类型。如果您正在创建新对象,则返回 201 状态,更新或删除 - 204。

    201 创建

    请求已完成,并导致创建了一个或多个新资源。 请求创建的主要资源由响应中的 Location 标头字段标识,如果没有收到 Location 字段,则由有效的请求 URI 标识。

    204 无内容

    服务器已成功完成请求,并且响应负载正文中没有要发送的其他内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-21
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多