2010-10-14 12 views

risposta

14

Il termine chiave per PUT per me è sempre idempotente. Mentre per POST si sta sempre "aggiungendo un altro" elemento allo stato dei sistemi, con PUT l'azione è la stessa anche se sono state eseguite più volte (perché si sta consultando un elemento).

Esempio:

fare 100 volte POST/album = si finirebbe con 100 diversi album (ma con lo stesso contenuto)

fanno 100 volte put/album/123 = si finirebbe con un singolo album con id 123 (con il contenuto)

+1

POST non ha bisogno di aggiungere nulla. –

+0

Lo stesso e per chiarire, in particolare facendo riferimento alla risposta di Victor, PUT è una creazione alla prima chiamata e un aggiornamento successivo. Quindi, rimane idempotente –

18

È utilizzato per entrambi. Quoth the RFC:

Il metodo PUT richiede che l'entità inclusa sia archiviata nell'URI di richiesta fornito. Se l'URI della richiesta si riferisce a una risorsa già esistente, l'entità inclusa DOVREBBE essere considerata come una versione modificata di quella che risiede sul server di origine. Se l'URI della richiesta non punta a una risorsa esistente e quell'URI può essere definito come una nuova risorsa dall'agente utente richiedente, il server di origine può creare la risorsa con quell'URI.

+0

Quindi, in altre parole, inserire se non esiste, altrimenti aggiornare. – Jnr

1

PUT viene utilizzato per l'aggiornamento del contenuto, ma se si dispone già di un ID, si sta aggiornando. In REST in generale, devi POST a /albums (o qualsiasi altra cosa) per creare un nuovo record con un ID sconosciuto. Dato che hai un ID, stai aggiornando il documento vuoto con quell'ID al contenuto che stai fornendo.

1

PUT consiste nel creare una nuova o sostituire interamente una risorsa esistente quando si conosce l'URI esistente o quale sarà il nuovo URI. POST è per aggiornare parti di una risorsa esistente o per creare una nuova risorsa quando il server deve assegnare il nuovo URI. È così semplice. Sia PUT che POST vengono utilizzati per creazioni e aggiornamenti, non si tratta di creare o aggiornare, ma di sapere se l'URI è già noto o se è necessario che il server lo assegni a te.

Problemi correlati