Perché il metodo PATCH non è idempotente?

32

Mi stavo chiedendo di questo.

Supponiamo di avere una risorsa user con i campi id e name . Se voglio aggiornare un campo, potrei semplicemente fare una richiesta PATCH alla risorsa come questa

PATCH /users/42
{"name": "john doe"} 

E quindi l'applicazione aggiornerà il nome dell'utente 42.

Ma perché se ripeto questa richiesta il risultato sarebbe diverso?

Secondo RFC 5789

PATCH is neither safe nor idempotent

    
posta mattecapu 24.10.2014 - 10:41
fonte

1 risposta

26

Una richiesta PATCH può essere idempotente, ma non è obbligatorio esserlo. Questo è il motivo per cui è caratterizzato come non idempotente.

Se PATCH può essere idempotente o no dipende strongmente da come vengono comunicate le modifiche richieste.
Ad esempio, se il formato della patch è sotto forma di {change: 'Name' from: 'benjamin franklin' to: 'john doe'} , qualsiasi richiesta PATCH successiva alla prima avrà un effetto diverso (una risposta di errore) rispetto alla prima richiesta.
Un altro motivo per non idempotency può essere che applicando la modifica su qualcosa di diverso dalla risorsa originale può rendere la risorsa non valida. Questo sarebbe anche il caso se applichi la modifica più volte.

    
risposta data 24.10.2014 - 12:45
fonte

Leggi altre domande sui tag