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

Довольно часто слышал и учавствовал в холиварах о том зачем это надо ? Какая-то тема, которую спрашивают только на собеседовании, а в жизни это используется раз в год. Таких тем в целом много... А вот идемпотентность - нет)

Идемпотентность: если мы вызовем повторно запрос с теми же параметрами (а может не запрос, может повторно прилетит сообщение в очереди, но это реже), то он сделает/не сделает тоже самое. Например если мы 2 раза вызвали создание сущности с теми же параметрами и получили 2 сущности - беда. Должно первый раз создать сущность, потом нет. Зачастую есть полуавтоматические "повторяторы" или пользователь может нажать 2 раза поэтому нужно реально стараться делать методы идемпотентными. Для этого может использоваться "ключ идемпотнетности" - грубо говоря гуид, который кэшируется или сохраняется в базу для обработанных запросов. Есть вот такая библиотека https://github.com/ikyriak/IdempotentAPI , но сам не использовал

#middle