Idempotenza
Ripeta un acquisto in sicurezza, senza acquistare due volte.
Dopo un errore di rete, potrebbe non sapere se un acquisto è andato a buon fine. Per questo ogni POST /offsets richiede un’intestazione Idempotency-Key: un valore univoco per ogni acquisto, ad esempio un UUID.
Idempotency-Key: 7f8d0c6e-2b1a-4e9f-9d3c-5a6b7c8d9e0f
Cosa succede quando riprova
| Cosa invia | Cosa riceve |
|---|---|
| Una nuova chiave | Un nuovo acquisto (201). |
| La stessa chiave e lo stesso corpo | Di nuovo il primo acquisto (201), con Idempotent-Replayed: true. Nulla viene acquistato due volte. |
| La stessa chiave e un corpo diverso | 409 idempotency_key_reused. Usi una nuova chiave per un nuovo acquisto. |
La replica restituisce l’acquisto nel suo stato attuale, quindi il campo status potrebbe essere già passato da processing a placed.
Da sapere
- Le chiavi contengono da 1 a 255 caratteri ASCII stampabili e le conserviamo in modo permanente, separatamente per ciascuna modalità.
- L’ordine delle chiavi nel corpo e gli spazi non contano:
{"kg":1,"reference":"a"}e{ "reference": "a", "kg": 1 }sono la stessa richiesta. - Un acquisto non riuscito (ad esempio
402 insufficient_balanceo un errore di validazione) non registra nulla. Dopo una ricarica, può riprovare con la stessa chiave. - Due richieste con la stessa chiave nello stesso istante sono sicure: una effettua l’acquisto, l’altra riceve la replica.