Vai al contenuto

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 Entity e l'aggiornamento non viene applicato.

Il flusso corretto

  1. Leggi l'entità (GET): la risposta contiene il concurrencyToken corrente.
  2. Modifica i campi che ti interessano, mantenendo invariato il token ricevuto.
  3. 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.