Что такое идемпотентность – и почему это важно знать системному аналитику при работе с API
Один из любимых вопросов интервьюеров на собеседовании. Давайте разбираться на простых примерах. Но для начала немного введения в тему.
При проектировании API важно учитывать, как будет вести себя система, если запрос вдруг повторится. Такое может произойти, например, при нестабильном соединении: пользователь отправил запрос, не получил ответа и нажал кнопку повторно. Или система-партнёр не дождалась подтверждения и снова отослала данные.
И вот здесь важно понимать: будет ли от повторного запроса “беда” – или ничего страшного не случится?
Идемпотентность – это свойство запроса, при котором результат от одного и нескольких одинаковых запросов остаётся неизменным.
Простые примеры:
• Идемпотентный запрос:
DELETE /users/123 – сколько раз не вызывай, пользователь либо уже удалён, либо будет удалён. Повторное выполнение не меняет результат.
• Неидемпотентный запрос:
POST /orders – каждый запрос создаёт новый заказ. Повтор – значит второй, третий, и так далее заказ.
Почему это важно?
В реальности запрос может дублироваться – и вы не можете это контролировать.
Если метод не идемпотентный, повторение может привести к:
• созданию лишних объектов,
• повторной оплате,
• некорректным данным.
Системный аналитик должен:
✔️Учитывать возможность повторов (retry),
✔️Понимать, какие методы должны быть идемпотентными,
✔️Закладывать нужную логику поведения: например, проверку на уникальность, сохранение статуса и т.п.
Если вы работаете с API или проектируете бизнес-логику, знать и применять идемпотентность просто обязательно.
Post #825
541
- 🔥 16
- ✍ 4
- 👍 3