POST

HTTP-метод POST надсилає дані на сервер. Тип тіла запиту позначається в заголовку Content-Type .

Різниця між PUT і POST полягає в тому, що PUT є ідемпотентним: кілька послідовних викликів має той же ефект що і один раз (не дасть побічних ефектів). В противагу цьому, послідовні ідентичні виклики POST можуть мати додаткові ефекти, подібно проходження замовлення кілька разів.

Запит POST зазвичай надсилається через HTML-форму і призводить до зміни на сервері. У цьому випадку тип вмісту вибирається шляхом введення відповідного рядка в атрибут enctype елемента <form>, або в атрибут formenctype елементів <input> або <button>:

  • application/x-www-form-urlencoded: ключі та значення кодуються в кортежах ключ-значення, розділених символом '&' з '=' між ключем і значенням. Цей тип не підходить для використання з двійковими даними, тому що тут не дозволяються не алфавітно-цифрові символи як в ключах так і в значеннях percent encoded, використовуйте замість цього multipart/form-data
  • multipart/form-data
  • text/plain

Коли запит POST відправляється за допомогою методу, відмінного від HTML-форми - як наприклад через XMLHttpRequest - тіло може приймати будь-який тип. Як описано в специфікації HTTP 1.1, POST призначений для забезпечення уніфікованого методу для виконання наступних функцій:

  • Анотування існуючих ресурсів
  • Розміщення повідомлення на дошці оголошень, групі новин, списку розсилки або подібній групі статей;
  • Додавання нового користувача через реєстраційне вікно;
  •  Надання блоку даних, таких як результат подання форми до процесу обробки даних;
  • Розширення бази даних через операцію додавання.
Запит має тіло Так
Успішна відповідь має тіло Так
Safe Ні
Idempotent Ні
Cacheable Тільки у випадку, якщо включена інформація про свіжість
Дозволений в HTML-формах Так

Синтаксис

POST /index.html

Приклад

Проста форма з використанням типового типу вмісту application/x-www-form-urlencoded:

POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

say=Hi&to=Mom

Форма, що використовує тип вмісту multipart/form-data:

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

Специфікація

Specification Title
RFC 7231, section 4.3.3: POST Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

Сумісність з браузерами

BCD tables only load in the browser

See also