PUT vs POST – Differenza tra loro
Differenze chiave tra PUT e POST
- Il metodo PUT viene chiamato quando devi modificare una singola risorsa, mentre il metodo POST viene chiamato quando devi aggiungere una risorsa figlio.
- Le risposte del metodo POST possono essere memorizzate nella cache, ma non è possibile memorizzare nella cache le risposte del metodo PUT.
- Puoi utilizzare la query UPDATE in PUT, mentre puoi utilizzare la query di creazione in POST.
- Nel metodo PUT, il client decide quale risorsa URI dovrebbe avere e nel metodo POST, il server decide quale risorsa URI dovrebbe avere.
- PUT funziona in modo specifico, mentre POST funziona in modo astratto.
- Se invii la stessa richiesta PUT più volte, il risultato rimarrà lo stesso, ma se invii la stessa richiesta POST più volte, riceverai risultati diversi.
- Il metodo PUT è idempotente, mentre il metodo POST non è idempotente.

Cos'è il metodo PUT?
Il metodo PUT viene utilizzato per aggiornare la risorsa disponibile sul server. In genere, sostituisce tutto ciò che esiste nell'URL di destinazione con qualcos'altro. Puoi usarlo per creare una nuova risorsa o sovrascriverne una esistente. PUT richiede che l'entità racchiusa venga archiviata sotto l'URI richiesto fornito (Uniform Resource Identifier).
Cos'è il metodo POST?
POST è un metodo supportato da HTTP e
mostra che un server web accetta i dati inclusi nel corpo del messaggio richiesto. POST viene spesso utilizzato dal World Wide Web per inviare dati generati dall'utente al server Web o quando si carica un file.
Differenze tra PUT e POST nelle API REST
Ecco l'importante differenza tra il metodo PUT e POST:
PUT | POST |
---|---|
Questo metodo è idempotente. | Questo metodo non è idempotente. |
Il metodo PUT viene chiamato quando è necessario modificare una singola risorsa, che fa già parte della raccolta di risorse. | Il metodo POST viene chiamato quando è necessario aggiungere una risorsa figlio nella raccolta di risorse. |
RFC-2616 descrive che il metodo PUT invia una richiesta per un'entità racchiusa memorizzata nell'URI della richiesta fornita. | Questo metodo richiede al server di accettare l'entità racchiusa nella richiesta. |
La sintassi del metodo PUT è PUT /questions/{question-id} | La sintassi del metodo POST è POST /questions |
Non è possibile memorizzare nella cache le risposte del metodo PUT. | La risposta del metodo POST può essere memorizzata nella cache. |
PUT /vi/juice/orders/1234 indica che stai aggiornando una risorsa identificata da "1234". | POST /vi/juice/orders indica che stai creando una nuova risorsa e restituisce un identificatore per descrivere la risorsa. |
Se invii la stessa richiesta più volte, il risultato rimarrà lo stesso. | Se invii la stessa richiesta POST più di una volta, riceverai risultati diversi. |
PUT funziona in modo specifico. | POST funziona come astratto. |
Usiamo la query UPDATE in PUT. | Usiamo la creazione di query in POST. |
Nel metodo PUT, il client decide quale risorsa URI dovrebbe avere. | Nel metodo POST, il server decide quale risorsa URI dovrebbe avere. |
Esempio di PUT
Ecco l'esempio del server web di un metodo PUT:
HTTP PUT http://www.google.com/users/234
HTTP PUT http://www.google.com/users/234/accounts/567
RICHIEDI
PUT /new.html HTTP/1.1 Host: example.com Content-type: text/html Content-length: 20 <p>New File</p>
Se la risorsa di destinazione ha la rappresentazione corrente e viene modificata con lo stato della rappresentazione racchiusa, il server dovrebbe inviare due risposte. Il primo codice di risposta è 200 (OK) e il secondo codice di risposta è 204 (Nessun contenuto).
Se la risorsa di destinazione non ha alcuna rappresentazione, il server dovrebbe informare l'utente inviando una risposta con codice 201 (Creato).
HTTP/1.1 201 Created Content-Location: /new.html
Esempio di POST
Ecco un esempio del metodo POST:
POST HTTP http://www.google.com/users
POST HTTP http://www.google.com/users/234/accounts
Un modulo che utilizza il tipo di contenuto predefinito application/x-www-form-urlencoded:
POST /test HTTP/1.1 Host: abc.example Content-Type: application/x-www-form-urlencoded Content-Length: 40 field1=value1&field2=value2
Testare un'API con richieste PUT
Ecco i passaggi per testare l'API con richieste PUT:
Passo 1) Aggiorna le risorse con la richiesta PUT.
Passo 2) Utilizza il metodo GET per la risorsa. Se la richiesta PUT ha esito positivo, riceverai nuovi dati. Questo metodo fallirà se i dati forniti nella richiesta non sono validi. Pertanto, non aggiornerà nulla.
Testare un'API con richieste POST
Ecco i passaggi per testare l'API con le richieste POST:
Passo 1) Crea una risorsa utilizzando la richiesta POST e assicurati che restituisca il codice di stato 200.
Passo 2) Effettua una richiesta GET per quella risorsa e salva i dati nel formato corretto.
Passo 3) È necessario aggiungere test che garantiscano che le richieste POST falliscano con dati errati.
Vantaggi del metodo PUT
Ecco i vantaggi/vantaggi derivanti dall'utilizzo del metodo PUT:
- Ti aiuta a memorizzare l'entità fornita sotto l'URI fornito
- Se l'entità fornita esiste già, puoi eseguire l'operazione di aggiornamento oppure puoi creare con quell'URI.
- Puoi creare una risorsa quante volte vuoi.
- Creare una risorsa con il metodo PUT è molto semplice.
- Non è necessario verificare se l'utente ha fatto clic più volte sul pulsante di invio o meno.
- Può identificare l'entità allegata alla richiesta.
Vantaggi del metodo POST
Ecco i vantaggi/vantaggi derivanti dall'utilizzo del metodo POST:
- Questo metodo ti aiuta a determinare l'URI della risorsa.
- Specificare una nuova intestazione della posizione della risorsa è molto semplice utilizzando l'intestazione della posizione.
- Puoi inviare una richiesta per accettare l'entità come nuovo subordinato della risorsa, identificata dall'URI.
- È possibile inviare i dati generati dall'utente al server web.
- È molto utile quando non si conosce l'URL per conservare qualsiasi risorsa.
- Utilizza POST quando hai bisogno del server, che controlla la generazione dell'URL delle tue risorse.
- POST è un metodo sicuro poiché le sue richieste non rimangono nella cronologia del browser.
- Puoi trasmettere facilmente una grande quantità di dati tramite posta.
- Puoi mantenere i dati privati.
- Questo metodo può essere utilizzato per inviare dati binari e ASCII.