Zum Inhalt springen

Idempotenz

Die Antwort, die nie ankommt.

Eine Verbindung bricht ab, ein Zwischenrechner läuft in eine Zeitgrenze — und Ihr Programm weiß nicht, ob geschrieben wurde. Ohne Zusage bleiben zwei Möglichkeiten, und beide sind falsch: den Datensatz verlieren oder ihn zweimal anlegen.

Wie es funktioniert.

Sie wählen für jeden Schreibvorgang einen eigenen Wert — eine UUID genügt — und senden ihn in der Kopfzeile. Der erste Aufruf arbeitet, jeder weitere mit demselben Wert bekommt denselben Datensatz zurück, ohne dass ein zweiter entsteht.

So sieht es aus.

Dieselben drei Zeilen, so oft Sie wollen. Beim zweiten Mal antwortet KRONENWERK mit dem Kunden vom ersten Mal.

POST https://kronenwerk.org/api/extern/v1/customers\nAuthorization: Bearer greif_live_…\nIdempotency-Key: 6f1c2a8e-4b3d-4a21-9d77-0c5e1f9b2a44\n\n{"name":"Kellermann Elektrotechnik GmbH","email":"buchhaltung@kellermann.de","street":"Am Sandtorkai 41","postalCode":"20457","city":"Hamburg","country":"DE"}

Drei Regeln.

Gleicher Inhalt Sie bekommen denselben Datensatz zurück, gelesen wie beim ersten Mal.
Anderer Inhalt Abgelehnt. Ein Schlüssel steht für genau eine Absicht, und die stillschweigend zu beantworten wäre eine Bestätigung für etwas, das nicht geschehen ist.
Gültigkeit 24 h — danach gilt derselbe Wert wieder als neuer Vorgang

Warum die Kopfzeile Pflicht ist.

Eine freiwillige Zusage schützt genau die Aufrufer, die den Schutz nicht gebraucht hätten. Der doppelte Kunde fällt niemandem auf, bis eine Rechnung an das falsche Doppel geht — und dann ist er Wochen alt.