Есть слово, которое звучит так, будто его придумали специально, чтобы пугать новичков.
Idempotency.
На самом деле идея очень простая.
Представьте, что вы оплатили заказ в интернет-магазине. Нажали кнопку «Оплатить», интернет завис... и вы не поняли, прошел платеж или нет.
Что делает почти любой человек?
Правильно. Нажимает кнопку еще раз. 😄
Если backend не предусмотрел такую ситуацию, последствия могут быть неприятными:
💳 деньги спишутся дважды;
📦 заказ создастся два раза;
🚕 курьер поедет к вам с двумя одинаковыми посылками;
💸 а компании потом придется возвращать деньги и разбираться с недовольными клиентами.
Именно здесь появляется idempotency.
Суть простая: если один и тот же запрос случайно отправится несколько раз, сервер должен понять, что он уже был обработан, и не выполнить действие повторно.
Для пользователя всё выглядит так, будто ничего необычного не произошло. А для бизнеса это экономия денег, времени и нервов.
Именно поэтому idempotency используют в платежах, бронировании билетов, банковских переводах, заказах еды и многих других сервисах, где цена ошибки слишком высока.
Иногда одна небольшая проверка на backend предотвращает тысячи двойных списаний и обращений в поддержку.
И это отличный пример того, что хороший код — это не только скорость и архитектура. Иногда это просто умение предусмотреть, что пользователь обязательно нажмет кнопку второй раз. 😄
👇 А вы когда-нибудь случайно отправляли один и тот же запрос или нажимали кнопку «Оплатить» несколько раз подряд?