HTTP 204 No Content

Успех с намеренно пустым телом — запрос выполнен, просто возвращать нечего.

Что означает HTTP 204

HTTP 204 No Content сигнализирует об успехе точно так же, как 200, за исключением того, что ответ намеренно не содержит тела. Это идиоматичный ответ для DELETE-запросов, для обновлений PUT/PATCH, где возврат объекта был бы избыточен, и для эндпоинтов маячков (beacon) или логирования.

Поскольку 204 не должен содержать тела, разбор JSON у ответа 204 в клиентском коде (например, вызов response.json() после fetch) вызывает исключение — очень частая ошибка. Проверяйте статус перед разбором тела.

Частые причины ответов 204

  • DELETE-запрос удалил ресурс.
  • PUT или PATCH обновили ресурс, и сервер решил не отправлять его обратно.
  • Эндпоинт, который только фиксирует данные (аналитические маячки, health-check), подтвердил получение.

Хорошие практики для разработчиков

  • Никогда не включайте тело ответа в 204 — многие серверы и прокси разорвут соединение, если вы это сделаете.
  • В клиентском коде проверяйте статус 204 перед вызовом .json() или .text().
  • Если клиентам нужно обновлённое представление, вместо 204 верните 200 с телом ответа.

Пример ответа

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 с телом-подтверждением тоже допустим, если клиентам нужны подробности об удалённом объекте.