Ответ
Идемпотентность — это свойство операции, при котором ее многократное выполнение (с одинаковыми входными данными) приводит к одинаковому результату и состоянию системы, как и после первого выполнения.
Принцип в HTTP:
- Идемпотентные методы:
GET,HEAD,PUT,DELETE,OPTIONS,TRACE. Повторные идентичные запросы не должны оказывать дополнительного эффекта на сервер. - Неидемпотентный метод:
POST. Каждый запрос обычно создает новый ресурс.
Примеры:
DELETE /api/users/123— Удаляет пользователя с ID 123. Повторные вызовы вернут тот же результат (например, 404 или 410), состояние "пользователь удален" не изменится.PUT /api/users/123 { "name": "Alice" }— Устанавливает имя пользователя в "Alice". Повторные вызовы не изменят итоговое состояние.POST /api/users { "name": "Alice" }— Создаст нового пользователя "Alice" при каждом вызове. Не идемпотентен.
Практическая ценность: Идемпотентность критически важна для надежности сетевых взаимодействий. Если клиент не получил ответ (из-за таймаута или сетевой ошибки), он может безопасно повторить идемпотентный запрос, не опасаясь создать дубликаты или вызвать побочные эффекты.