POST
HTTP-метод POST
предназначен для отправки данных на сервер. Тип тела запроса указывается в заголовке Content-Type
.
Разница между PUT
и POST
состоит в том, что PUT
является идемпотентным: повторное его применение даёт тот же результат, что и при первом применении (то есть у метода нет побочных эффектов), тогда как повторный вызов одного и того же метода POST
может иметь такие эффекты, как например, оформление одного и того же заказа несколько раз.
Запрос POST
обычно отправляется через форму HTML и приводит к изменению на сервере. element or the formenctype attribute of the <input> or <button> elements:">В этом случае тип содержимого выбирается путём размещения соответствующей строки в атрибуте enctype
элемента <form>
или formenctype
атрибута элементов <input>
или <button>
:
application/x-www-form-urlencoded
: значения кодируются в кортежах с ключом, разделённых символом'&'
, с'='
между ключом и значением. Не буквенно-цифровые символы - percent encoded: это причина, по которой этот тип не подходит для использования с двоичными данными (вместо этого используйтеmultipart/form-data
)multipart/form-data
: каждое значение посылается как блок данных ("body part"), с заданными пользовательским клиентом разделителем ("boundary"), разделяющим каждую часть. Эти ключи даются в заголовкиContent-Disposition
каждой частиtext/plain
Когда запрос POST
отправляется с помощью метода, отличного от HTML-формы, — например, через XMLHttpRequest
— тело может принимать любой тип. Как описано в спецификации HTTP 1.1, POST
предназначен для обеспечения единообразного метода для покрытия следующих функций:
- Аннотация существующих ресурсов
- Публикация сообщения на доске объявлений, в новостной группе, в списке рассылки или в аналогичной группе статей;
- Добавление нового пользователя посредством модальности регистрации;
- Предоставление блока данных, например, результата отправки формы, процессу обработки данных;
- Расширение базы данных с помощью операции добавления.
Запрос имеет тело | Да |
---|---|
Успешный ответ имеет тело | Да |
Безопасный | Нет |
Идемпотентный | Нет |
Кешируемый | Только если включена информация о свежести сообщения |
Допускается в HTML-формах | Да |
Синтаксис
POST /index.html
Пример
Простая форма запроса, используя стандартный application/x-www-form-urlencoded
content type:
POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
say=Hi&to=Mom
Форма запроса, используя multipart/form-data
content type:
POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"
--boundary
Content-Disposition: form-data; name="field1"
value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
--boundary--
Спецификации
Specification |
---|
HTTP Semantics # POST |
Совместимость с браузерами
BCD tables only load in the browser