Controllo della concorrenza
L'Amica Cloud API adotta un controllo di concorrenza ottimistico: più client possono leggere la stessa entità, ma in aggiornamento l'API impedisce di sovrascrivere modifiche fatte nel frattempo da altri, senza ricorrere a lock.
Il ConcurrencyToken
Ogni entità contiene una proprietà ConcurrencyToken. Quando aggiorni un'entità con
una PUT, il token presente nel body della richiesta viene confrontato con quello
attualmente memorizzato:
- se i token coincidono, l'aggiornamento va a buon fine e l'entità riceve un nuovo token;
- se i token differiscono — perché qualcun altro ha modificato l'entità dopo la
tua lettura — la richiesta riceve un
422 Unprocessable Entitye l'aggiornamento non viene applicato.
Il flusso corretto
- Leggi l'entità (
GET): la risposta contiene ilconcurrencyTokencorrente. - Modifica i campi che ti interessano, mantenendo invariato il token ricevuto.
- Aggiorna l'entità (
PUT) inviando il body completo, token incluso.
Usa sempre l'ultimo token ricevuto da una risposta GET o POST. In caso di
422, rileggi l'entità per ottenere il token aggiornato, riapplica le tue modifiche e
riprova.
Tip
Gli SDK espongono il concurrencyToken come una normale
proprietà del modello: ti basta rileggere l'entità, modificarla e rispedirla. Il
Quickstart del tuo linguaggio mostra il flusso
completo di aggiornamento.