Найти в Дзене

Идемпотентность в API


Это когда при повторных вызовах одного и того же метода API система меняет своё состояние один раз. Другими словами, это нужно предотвращения дублирования данных.

Почему это важно - вам точно не понравится, если с вашего счёта деньги за покупку спишутся несколько раз.

HTTP методы GET, PUT, DELETE формально считаются идемпотентными, тогда как POST и PATCH нет. Это не означает, что вы не можете сделать GET неидемпотентным, а POST идемпотентным. Но это то, на что полагается множество программ, например, прокси-серверы могут не повторять POST и PATCH запросы при ошибках, тогда как GET и PUT могут повторить.

Откуда берутся повторные запросы.
При долгой обработке запроса пользоатель может подумать, что приложение подвисло, грохнуть его и повторить операцию, сеть может отвалиться до получения ответа от сервера, д

Как обеспечивается.
- Ключ идемпотентности - уникальный идентификатор, присваиваемый КЛИЕНТОМ каждому запросу, т.е. когда клиент посчитал, что его запрос не выполнен и он хочет его повторить, то посылает запрос с тем-же самым ключом идемпотентности.
- Синхронизация списка операций/заказов на стороне клиента и сервера через версионирование этого списка.
- В каких-то случаях может понадобиться Soft Delete

Полезные ссылки:
О чём мне поведали грибы
dzen.ru
1 минута