Gymterview
junior

Какой метод HTTP не является идемпотентным

Метод POST не является идемпотентным — повторный вызов с теми же данными может привести к разным результатам (например, создать несколько одинаковых записей). Методы GET, PUT, DELETE, HEAD и OPTIONS являются идемпотентными: повторный вызов возвращает тот же результат.

HTTP-метод Идемпотентный Безопасный (read-only)
GET Да Да
HEAD Да Да
OPTIONS Да Да
PUT Да Нет
DELETE Да Нет
POST Нет Нет
PATCH Нет Нет

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

Это свойство важно для обработки сетевых ошибок: GET/PUT/DELETE можно безопасно повторить при таймауте, а POST — нет (без дополнительных мер вроде idempotency key).

На собеседовании: используйте правильный термин — «идемпотентный», а не «неизменяемый». Частая ошибка — забыть про PATCH (он тоже не идемпотентен). Бонусный балл — упомянуть idempotency key для POST.