Idempotenz ist die Eigenschaft einer Operation, bei mehrfacher Ausführung dasselbe Ergebnis zu haben wie bei einer einfachen. Einen Lichtschalter auf aus zu stellen ist idempotent: Beim zweiten Mal bleibt das Licht einfach aus.
- Idempotenz
Die Eigenschaft einer Anfrage oder Funktion, durch Wiederholung keinen weiteren Effekt zu erzeugen.
Beispiel: „Dank Idempotenz entsteht keine zweite Bestellung, wenn der Kunde auf Kaufen doppelt klickt.“Das Wort kommt aus der Mathematik, aus dem Lateinischen idem für dasselbe und potentia für Kraft oder Wirkung.
Idempotenz bei HTTP-Methoden
GET, PUT und DELETE sind nach dem Standard idempotent. Wer eine Ressource zweimal mit denselben Daten ersetzt oder zweimal löscht, hat danach denselben Zustand wie nach dem ersten Mal.
POST ist es nicht. Zweimal abgeschickt, legt es zwei Datensätze an, und genau daraus entstehen doppelte Bestellungen, doppelte Anmeldungen und doppelte Mails.
Warum Idempotenz in der Praxis zählt
Weil Netze unzuverlässig sind. Eine Anfrage kommt an, die Antwort geht unterwegs verloren, und der Aufrufer versucht es noch einmal. Auch Webhooks werden von vielen Anbietern bei ausbleibender Antwort wiederholt, und ein Ereignis kann dann doppelt eintreffen.
Ist die Verarbeitung idempotent, schadet das nicht. Ist sie es nicht, sind doppelte Buchungen nur eine Frage der Zeit.
Wie Idempotenz gelingt
Mit einer Kennung je Vorgang. Zahlungsanbieter wie Stripe erlauben einen Idempotency Key im Header: Kommt dieselbe Kennung zweimal, liefert der Server das Ergebnis des ersten Aufrufs, statt die Zahlung erneut auszulösen.
Beim Empfang von Webhooks hilft es, die Kennung jedes Ereignisses zu speichern und bereits bekannte Ereignisse zu überspringen.