HTTP 204 No Content

响应体故意留空的成功状态——请求已完成,只是没有需要返回的内容。

HTTP 204 是什么意思

HTTP 204 No Content 与 200 一样表示成功,唯一区别是响应故意没有响应体。对于 DELETE 请求、返回对象显得多余的 PUT/PATCH 更新,以及信标或日志记录端点来说,这是符合语义的答案。

由于 204 不得包含响应体,在客户端代码中对 204 响应进行 JSON 解析(例如在 fetch 之后调用 response.json())会抛出异常——这是一个非常常见的错误。解析之前应先检查状态码。

204 响应的常见原因

  • DELETE 请求移除了该资源。
  • PUT 或 PATCH 更新了资源,而服务器选择不回显该资源。
  • 一个只用于记录数据的端点(分析信标、健康检查)确认已收到数据。

开发者的最佳实践

  • 切勿为 204 响应附带响应体——许多服务器和代理在检测到这种情况时会断开连接。
  • 在客户端代码中,调用 .json() 或 .text() 之前先判断状态码是否为 204。
  • 如果客户端需要更新后的表示,应返回带响应体的 200,而不是 204。

示例响应

HTTP/1.1 204 No Content
日期: Thu, 02 Jul 2026 10:00:00 GMT

常见问题

204 与带空响应体的 200 有什么区别?

实际行为上两者相同,但 204 更加明确:响应体的缺失是有意为之,客户端不应尝试解析它。

为什么 response.json() 在 204 时会失败?

204 响应根本没有响应体,因此无内容可解析。解析前应先检查 response.status === 204。

DELETE 是否应该总是返回 204?

这是最常见的选择。如果客户端需要了解被删除内容的详情,返回带确认信息响应体的 200 同样合理。