Controllo della concorrenza
Nota
Le API del portale Cloud Partner sono integrate con e continueranno a lavorare nel Centro per i partner. La transizione introduce piccole modifiche. Esaminare le modifiche elencate in Informazioni di riferimento sull'API del portale Cloud Partner per assicurarsi che il codice continui a funzionare dopo la transizione al Centro per i partner. Le API CPP devono essere usate solo per i prodotti esistenti già integrati prima della transizione al Centro per i partner; i nuovi prodotti devono usare le API di invio al Centro per i partner.
Ogni chiamata alle API di pubblicazione nel portale Cloud Partner deve specificare in modo esplicito la strategia di controllo della concorrenza da usare. Se non viene specificata l'intestazione If-Match viene generata una risposta di errore HTTP 400. Sono disponibili due strategie per il controllo della concorrenza.
- Ottimistica: il client che esegue l'aggiornamento verifica se i dati sono cambiati dall'ultima operazione di lettura.
- Priorità ultimo: il client aggiorna direttamente i dati, indipendentemente dal fatto che siano stati modificati da un'altra applicazione dal momento dell'ultima lettura.
Flusso di lavoro della concorrenza ottimistica
È consigliabile usare la strategia di concorrenza ottimistica, con il flusso di lavoro seguente, per garantire che non venga apportata alle risorse nessuna modifica imprevista.
- Recuperare un'entità mediante le API. La risposta include un valore ETag che identifica la versione attualmente memorizzata dell'entità (al momento della risposta).
- Al momento dell'aggiornamento, includere questo stesso valore ETag nell'intestazione della richiesta If-Match obbligatoria.
- L'API confronta il valore ETag ricevuto nella richiesta con il valore ETag corrente dell'entità in una transazione atomica.
- Se i valori ETag sono diversi, l'API restituisce una risposta HTTP
412 Precondition Failed
. Questo errore indica che un altro processo ha aggiornato l'entità dall'ultimo recupero eseguito dal client, oppure che il valore ETag specificato nella richiesta non è corretto. - Se i valori ETag sono uguali, o se l'intestazione If-Match contiene il carattere jolly asterisco (
*
), l'API esegue l'operazione richiesta. L'operazione API aggiorna anche il valore ETag archiviato dell'entità.
- Se i valori ETag sono diversi, l'API restituisce una risposta HTTP
Nota
Specificando il carattere jolly (*) nell'intestazione If-Match, l'API usa la strategia di concorrenza "priorità ultimo". In questo caso, il confronto ETag non viene eseguito e la risorsa viene aggiornata senza alcun controllo.