Короткий ответ
Идемпотентная операция — та, повторное выполнение которой с тем же входом даёт тот же результат, что и однократное; пример идемпотентного метода — PUT/DELETE, неидемпотентного — POST создания ресурса.
Как это работает подробнее
Идемпотентность касается эффекта операции на систему, а не ответа — повторный PUT с тем же телом оставит ресурс в том же состоянии.
Что использовать на практике
- Практика. GET, PUT, DELETE по HTTP-семантике идемпотентны; POST обычно не идемпотентен, так как повторный вызов может создать второй ресурс.
Подводные камни
- Риск. Путать идемпотентность с безопасностью запроса (safe methods); считать, что идемпотентность гарантируется автоматически фреймворком.