🛗 Простыми словами про идемпотентность

Слово «идемпотентность» часто встречается, но не всегда понятно, что оно означает. Давайте разберемся, что это такое, на простых примерах.

Представьте ситуацию: вы заходите в подъезд и вызываете лифт. Через минуту забываете, что уже нажали кнопку, и вызываете его снова. Ничего страшного — лифт едет, а вы спокойно его ждете. Даже если бы вы нажимали кнопку 10, 20, 30 раз подряд, лифт всё равно не поедет быстрее и не изменит маршрут. Система работает как будто вашего повторного нажатия не было. Это и есть идемпотентность — свойство операции, при котором повторное её выполнение не изменяет состояние системы.

Теперь разберём это на примере методов API.

1⃣ GET — операция чтения.  Вы приходите в музей и видите красивую картину. От того, сколько раз вы на нее посмотрите - её красота не изменится. Картина в данном случае - система, а операция «посмотреть на картину» - идемпотентна. 2⃣ POST — операция создания.  Посещение музея вас вдохновило и вы купили картину по номерам. Потратите ли вы больше денег, если закажете ещё одну картину? Очевидно, что да. Если баланс кошелька - это система, то операция «заказать картину по номерам» будет неидемпотентна, так как она изменит баланс кошелька столько раз сколько заказов будет произведено. 3⃣ PUT — операция замены (полного обновления). Холст, мольберт и вдохновение. Вы так увлеклись, что за один вечер смогли закончить всю картину. Но вам не понравилось, и вы решили сделать все заново. Очистили холст и нарисовали картину по-новому. На мольберте будет стоять тот же холст, но уже с другой картиной. Если система - это холст, то операция «нарисовать картину по номерам» не изменит систему, а значит такая операция считается идемпотентной. 4⃣ PATCH — операция частичного изменения.  Картина была закончена и получилась действительно достойной, но вам все равно чего то не хватало. В итоге вы решили добавить свою подпись к картине. При необходимости повторно добавить подпись картина изменится. Если система — это «картина», то операция «добавить подпись» будет каждый раз менять эту систему, а значит такую операцию нельзя считать идемпотентной. 5⃣ DELETE — операция удаления. Вы знаете, что эта картина понравится вашей маме, поэтому решили сделать подарок. Но вы не сможете презентовать его вновь, потому что он уже отдан. Если система — это «ваше имущество», то операция «подарить картину маме» не изменит систему при повторном выполнении.

Надеюсь, теперь стало понятнее)

🛗 Простыми словами про идемпотентность | Сетка — новая социальная сеть от hh.ru
repost

590

input message

напишите коммент

· 11.01

Блин, автор спасибо большое за эту статью, оооочень много глупых и несуразных статей тут пишут, этот пост был лучшим что я видел за последние неделю тут. Браво ❤️

ответить

Спасибо за тёплые слова) Это очень мотивирует 🚀

ответить

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь