Articles

Idempotente

Un metodo HTTP è idempotente se una richiesta identica può essere fatta una o più volte di seguito con lo stesso effetto lasciando il server nello stesso stato. In altre parole, un metodo idempotente non dovrebbe avere effetti collaterali (tranne che per mantenere le statistiche). Implementati correttamente, i metodi GETHEADPUT e DELETE sono idempotenti, ma non POST metodo. Tutti i metodi sicuri sono anche idempotenti.

Per essere idempotente, viene considerato solo lo stato back-end effettivo del server, il codice di stato restituito da ogni richiesta può essere diverso: la prima chiamata di un DELETErestituirà probabilmente un 200, mentre quelle successive restituiranno probabilmente un 404. Un’altra implicazione diDELETE essendo idempotente è che gli sviluppatori non dovrebbero implementare API RESTful con una funzionalità di eliminazione dell’ultima voce utilizzando ilDELETE metodo.

Si noti che l’idempotenza di un metodo non è garantita dal server e alcune applicazioni potrebbero non correttamente rompere il vincolo di idempotenza.

GET /pageX HTTP/1.1 è idempotente. Chiamato più volte in una riga, il cliente ottiene gli stessi risultati:

GET /pageX HTTP/1.1GET /pageX HTTP/1.1GET /pageX HTTP/1.1GET /pageX HTTP/1.1

POST /add_row HTTP/1.1 non è idempotente; se viene chiamato più volte, si aggiunge una serie di righe:

POST /add_row HTTP/1.1POST /add_row HTTP/1.1 -> Adds a 2nd rowPOST /add_row HTTP/1.1 -> Adds a 3rd row

DELETE /idX/delete HTTP/1.1 è idempotente, anche se il codice di stato restituito può cambiare tra le richieste:

DELETE /idX/delete HTTP/1.1 -> Returns 200 if idX existsDELETE /idX/delete HTTP/1.1 -> Returns 404 as it just got deletedDELETE /idX/delete HTTP/1.1 -> Returns 404

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *