Idempotenz
Schreibanfragen nehmen einen Idempotency-Key-Header entgegen, sodass eine wiederholte Anfrage niemals zweimal angewendet wird.
curl -X POST https://api.fabhub.app/v1/items \
-H "X-API-Key: $FABHUB_API_KEY" \
-H "Idempotency-Key: 0b9c4a2e-2f1d-4c7a-9b3e-2a1f5c8d7e6b" \
-H "Content-Type: application/json" \
-d '{"name":"Widget","itemType":"product"}'
Regeln
- Erzeugen Sie einen eindeutigen Schlüssel pro logischem Schreibvorgang (eine UUID funktioniert gut).
- Verwenden Sie denselben Schlüssel nur für exakte Wiederholungen dieses Schreibvorgangs erneut.
- Verwenden Sie einen Schlüssel nicht über verschiedene Nutzlasten hinweg: das gibt
409mitcode: "CONFLICT"zurück. - Schlüssel werden 24 Stunden lang berücksichtigt.
Wo es gilt
Idempotency-Key ist bei jedem schreibenden POST- und PATCH-Aufruf für Artikel, Aufträge, Kontakte, Bestandsdokumente und Webhooks erforderlich. DELETE-Operationen sind von Natur aus idempotent und benötigen den Header nicht.
Mit dem SDK
Das SDK nimmt bei jeder Schreibmethode eine idempotencyKey-Option entgegen:
await fabhub.createItem(
{ name: 'Widget', itemType: 'product' },
{ idempotencyKey: crypto.randomUUID() },
);