POST

Метод HTTP

Спецификация HTTP-метода POST

Метод POST запрашивает у целевого ресурса обработку представления, заключенного в запросе, в соответствии со специфической семантикой ресурса. Например, POST используется для следующих функций (среди прочих):

  • Предоставление блока данных, таких как поля, введенные в HTML-форму, процессу обработки данных;
  • Отправка сообщения на доску объявлений, в группу новостей, список рассылки, блог или аналогичную группу статей;
  • Создание нового ресурса, который еще не идентифицирован сервером происхождения;
  • Добавление данных в существующее представление ресурса.

Оригинальный сервер указывает семантику ответа, выбирая соответствующий код состояния в зависимости от результата обработки POST-запроса; почти все коды состояния, определенные данной спецификацией, могут быть получены в ответ на POST (исключение составляют 206 (Partial Content), 304 (Not Modified) и 416 (Range Not Satisfiable)).

Если в результате успешной обработки POST-запроса на сервере происхождения был создан один или несколько ресурсов, то сервер происхождения ПОЗВОЛЯЕТ отправить ответ 201 (Created), содержащий поле заголовка Location, в котором указан идентификатор созданного первичного ресурса (раздел 7.1.2) и представление, описывающее статус запроса и ссылающееся на новый ресурс(ы).

Ответы на POST-запросы кэшируются только тогда, когда они содержат явную информацию о свежести (см. раздел 4.2.1 в [RFC7234]). Однако кэширование POST не имеет широкой реализации. Для случаев, когда сервер происхождения желает, чтобы клиент мог кэшировать результат POST таким образом, чтобы его можно было повторно использовать при последующем GET, сервер происхождения МОЖЕТ послать ответ 200 (OK), содержащий результат и поле заголовка Content-Location, имеющее то же значение, что и URI эффективного запроса POST (раздел 3.1.4.2).

Если результат обработки POST эквивалентен представлению существующего ресурса, сервер происхождения МОЖЕТ перенаправить пользовательский агент на этот ресурс, отправив ответ 303 (See Other) с идентификатором существующего ресурса в поле Location. Преимуществами этого способа являются предоставление агенту пользователя идентификатора ресурса и передача представления с помощью метода, более удобного для совместного кэширования, хотя и ценой дополнительного запроса, если у агента пользователя еще нет кэшированного представления.

Метод HTTP POST был специфицирован в разделе 4.3.3 документа RFC 7231 рабочей группой по проектированию Интернета (IETF) и консорциумом World Wide Web Consortium (W3C).

Описание метода POST

незавершённая работа

Пример для HTTP-метода POST

Request header:
POST /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537
Accept: application/json
Accept-Language: de-DE,de;q=0.5
Content-Type: application/json
Content-Length: 100
Connection: keep-alive
Request body:
{
  "key": "value",
  "foo": "bar"
}
Response header:
Content-Type: application/json
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache
Location: http://api.example.com/data/123
Response body:
{
  "status": "success",
  "id": 123
}