Что означает HTTP статус-код 204 (No Content)?

«Что означает HTTP статус-код 204 (No Content)?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Статус-код 204 No Content указывает, что сервер успешно обработал запрос, но не возвращает никакого содержимого в теле ответа.

Типичные сценарии использования:

  1. Успешный DELETE-запрос: Ресурс удалён, возвращать больше нечего.
  2. Успешный PUT/PATCH-запрос: Обновление прошло успешно, и клиенту не требуется новое представление ресурса (например, если он отправил все данные).
  3. Операции, не создающие контент: Например, отправка данных формы, которая просто обновляет состояние на сервере без необходимости перенаправления.

Пример HTTP-диалога:

DELETE /api/users/123 HTTP/1.1
Host: example.com
Authorization: Bearer token123

HTTP/1.1 204 No Content
Date: Mon, 01 Jan 2024 12:00:00 GMT
Server: Apache

Обратите внимание: после строки статуса и заголовков сразу идёт пустая строка, обозначающая конец заголовков и отсутствие тела ответа.

Ключевые особенности и требования:

  • Пустое тело: Ответ не должен содержать тело сообщения. Клиент должен игнорировать любое переданное тело.
  • Заголовки: Ответ может (и часто должен) содержать полезные заголовки, такие как Date, Server, ETag (если ресурс обновлён) или Location (если операция создала ресурс в другом месте — хотя для этого чаще используется 201 Created).
  • Семантика для клиента: Клиент не должен обновлять текущее документное представление (например, страницу в браузере), так как сервер явно сообщает, что нового контента нет. Это отличает 204 от 200 OK с пустым телом, которое может трактоваться как успешное получение «пустого» ресурса.