/ˌaɪdɪmˈpoʊtəns/i-dem-po-tenceTakéidempotentní operaceExpertní

Definice

Idempotence je vlastnost operace, u které opakované provedení se stejnými vstupy skončí ve stejném stavu jako provedení jediné. Je to základní pojistka proti dvojímu zaúčtování, když se požadavek kvůli výpadku sítě odešle dvakrát.

Kategorie: Softwarový vývojAktualizováno

Nezaměňujte: V matematice označuje idempotence prvek, pro který platí, že jeho druhá mocnina se rovná jemu samému. Tady jde o vlastnost operace v distribuovaných systémech.

Proč na tom záleží

Síť není spolehlivá. Klient odešle požadavek, server ho zpracuje, a odpověď se cestou zpátky ztratí. Klient neví, co se stalo, a zkusí to znovu. Pokud operace není idempotentní, zákazník zaplatí dvakrát.

Jak se idempotence zajišťuje

Nejběžnější způsob je idempotenční klíč: klient ke každému požadavku přiloží unikátní identifikátor a server si pamatuje, které klíče už zpracoval. Druhý požadavek se stejným klíčem nevykoná nic nového, jen vrátí původní odpověď.

Příklady z praxe

  1. Platba s idempotenčním klíčem

    E-shop pošle platební bráně požadavek s hlavičkou obsahující identifikátor objednávky. Když se odpověď ztratí a e-shop požadavek zopakuje, brána podle klíče pozná, že tuhle platbu už provedla, a nestrhne peníze podruhé.

    Idempotency-Key: order-2026-07-27-8841

Časté omyly

MýtusIdempotentní znamená, že se při opakování nic nezmění.
Ve skutečnostiPrvní volání stav změnit může a obvykle změní. Idempotence říká, že každé další volání se stejnými vstupy už výsledný stav nezmění, ne že jej nezmění ani to první.

Časté dotazy

Je metoda POST idempotentní?
Podle specifikace HTTP idempotentní není. Zopakování požadavku POST může vytvořit další zdroj, proto se u plateb a objednávek doplňuje idempotenčním klíčem. Metody GET, PUT a DELETE jsou naopak podle specifikace idempotentní.
Jaký je rozdíl mezi idempotentní a bezpečnou metodou?
Bezpečná metoda stav vůbec nemění, typicky GET. Idempotentní metoda stav změnit může, ale opakované provedení už výsledek dál neposouvá. Každá bezpečná metoda je tedy idempotentní, opačně to neplatí.

Zdroje

  1. RFC 9110, oddíl 9.2.2: Idempotent Methods(otevře se v novém okně)IETF, 2022

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.