Вопрос проверяет понимание идемпотентности и умение применять её в API, сетях и распределённых системах для безопасных повторных операций.
Идемпотентность — это свойство операции, при котором её многократное выполнение приводит к тому же состоянию системы, что и однократное. Это не значит, что операция не меняет данные: важно, чтобы повторный вызов не создавал дополнительных эффектов. Например, установка значения поля в 10 идемпотентна, а инкремент на 1 — нет.
Клиент отправляет запрос на создание платежа, но не получает ответ из-за таймаута и повторяет запрос. Чтобы не создать два платежа, сервер использует ключ идемпотентности.
POST /payments
Idempotency-Key: 8f14e45f-ea0b-4c1a-9c1e-2b7d1a6f9c33
{ "amount": 100, "currency": "USD" }
// Сервер сохраняет ключ и результат.
// Повторный запрос с тем же ключом вернёт тот же ответ,
// не создавая новый платёж.Важно различать идемпотентность и безопасность: безопасные методы (GET, HEAD) не меняют состояние, а идемпотентные могут менять, но повторно — без дополнительного эффекта.
Идемпотентность стоит применять везде, где возможны повторные вызовы: в публичных API, платёжных системах, очередях и распределённых сервисах. Это делает систему устойчивой к сбоям сети и повторным попыткам клиентов.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию