Чем отличается метод 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.