HTTPQUERY
Русский

204 No Content

Применение

Код состояния 204 No Content возвращается в ответ на операцию POST, PUT или DELETE, когда тело сообщения не предполагается. Некоторые серверы вместо этого возвращают 200 с пустым телом и Content-Length, равным 0.

Практический пример использования — результат отправки формы, когда пользователь нажимает кнопку «Сохранить». Сервер фиксирует изменения и полагается на то, что клиент сообщит пользователю об успехе.

Сервер не должен включать тело сообщения в ответ 204. Заголовки вроде Cache-Control и ETag по-прежнему отправляются и относятся к документу, определённому запросом.

Родственный код 205 Reset Content также не возвращает тела, но дополнительно предписывает клиенту сбросить представление документа (например, очистить форму после отправки). Условный GET возвращает 304, сигнализируя, что ресурс не нужно получать повторно.

Примечание

DELETE, возвращающий 204, — самый распространённый шаблон для простого удаления ресурса, когда тело ответа не требуется. Возвращайте 200, если ответ содержит подробности подтверждения или представление удалённого ресурса. PUT, возвращающий 204, распространён, когда обновление прошло успешно, а клиенту не нужно получать обновлённое представление обратно. 204 означает «успех, показывать нечего», тогда как 404 означает «ресурс не найден». Запрос пустой коллекции возвращает 200 с пустым массивом, а не 204.

Влияние на SEO

Google не может обработать ответ 204, поскольку содержимое не получено. URL, стабильно возвращающий 204, не появится в результатах поиска.

Пример

Клиент отправляет на сервер XML-данные, описывающие задание. Сервер отвечает подтверждением того, что данные приняты, а задание выполнено. Возвращать содержимое не требуется, поэтому код состояния 204 No Content здесь уместен.

Запрос

POST /job HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 68

<?xml version="1.0"?>
<job>
  <id>125</id>
  <task>G01</task>
</job>

Ответ

HTTP/1.1 204 No Content

Примеры кода

.NET

HttpStatusCode.NoContent

Rust

http::StatusCode::NO_CONTENT

Rails

:no_content

Go

http.StatusNoContent

Symfony

Response::HTTP_NO_CONTENT

Python3.5+

http.HTTPStatus.NO_CONTENT

Java

java.net.HttpURLConnection.HTTP_NO_CONTENT

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_NO_CONTENT

Angular

@angular/common/http/HttpStatusCode.NoContent