PassFront
  1. PassFront
  2. База знаний
  3. HTTP и HTTPS

Чем отличается метод POST от PUT?

HTTP и HTTPS

PUT полностью заменяет ресурс по известному адресу и идемпотентен, POST создаёт новый ресурс или запускает действие и не идемпотентен.

Идемпотентность

  • PUT /users/42 с одним и тем же телом можно повторить сколько угодно раз — результат один и тот же.
  • POST /users каждый раз может создавать нового пользователя. Повтор из-за таймаута даст дубликат.

Различия

  • Адрес: при PUT клиент знает URL ресурса, при POST его назначает сервер (например, возвращает 201 Created и Location).
  • Семантика: PUT — «положи сюда именно это»; POST — «обработай это».
  • Частичное обновление: PUT заменяет ресурс целиком, для частичных изменений есть PATCH.
  • Кэширование: ответы POST почти не кэшируются; PUT инвалидирует кэш по адресу.

Примеры

PUT /users/42
{"name": "Ann", "email": "a@x.com"}   // заменяет весь ресурс

POST /orders
{"items": [1, 2]}                     // создаёт заказ, id выдаст сервер

Коротко для собеседования

PUT — полная замена ресурса по известному URL, идемпотентный. POST — создание с серверным id или произвольное действие, не идемпотентный. Для частичных правок — PATCH.

Другие вопросы раздела