Differenze tra PUT e POST nel sistema REST

di Lorenzo Neri

Quali sono le differenze tra il metodo PUT e il metodo POST nel sistema REST? Può essere che tu te lo sia chiesto diverse volte: scopriamolo assieme nel nostro articolo!

Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!

Devi sapere che nel corso della mia vita ho raccolto diverse esperienze lavorative e quale miglior modo per tenere traccia delle proprie soluzioni se non questo blog che stai leggendo?

E non solo: perchè tenerle per me stesso quando anche tu ne puoi beneficiare? 😉

In questi anni mi è capitato numerose volte di lavorare alla parte back-end di diversi progetti web e soprattutto quando si ha a che fare con le API e no non parlo degli insetti, ho avuto a che fare spesso e volentieri con i metodi PUT e POST: perciò, cerchiamo di capire assieme a cosa servono e quali sono le differenze fra i due!

A che cosa servono i metodi PUT e POST?

Prima di capire le differenze tra i due metodi, cerchiamo di capire a che cosa servono.

I metodi PUT e POST possono essere usati per creare.

Creare cosa?

Poniti questa domanda: “Per quale motivo stai eseguendo quella determinata azione?”

In questo caso specifico, PUT e POST in linea globale, servono entrambi ad inoltrare dati alle API a cui stai lavorando, quindi, per porre domande complesse alle API stesse.

Capito questo, possiamo procedere oltre.

Le differenze tra PUT e POST

Prima di tutto: non è necessario supportare entrambi i metodi nel tuo sistema.

Sta a te, ma ricordati che dovrai usare quella giusta in base agli oggetti che stai usando nelle richieste HTTP delle tue API.

Facciamo un po’ di considerazioni assieme.

Dai un nome direttamente tu gli URL degli oggetti che crei in modo esplicito, oppure lasci al server decidere?

Se gli dai tu un nome, allora usa PUT, diversamente se è il server a decidere usa POST.

Il metodo PUT è idempotente. Che significa? Significa che se usi lo stesso oggetto per due volte di fila, non sortirà alcun effetto.

Puoi aggiornare o creare una risorsa tramite PUT con lo stesso URL.

Con POST hai ben due richieste HTTP che arrivano al server nello stesso istante, aggiornando quindi diverse parti dell’oggetto.

Fatte queste considerazioni sulle differenze principali tra PUT e POST nel sistema REST, facciamo degli esempi.

POST

Usato per modificare e aggiornare una risorsa:

POST /questions HTTP/1.1
Host: www.example.com/

Potrai notare che in questo caso, il nome della risorsa non è specificato. Di fatto, il nuovo URL dell’oggetto sarà ritornato dopo la richiesta.

PUT

Usato per creare una nuova risorsa, oppure sovrascriverla.

Per una nuova risorsa:

PUT /domande/<nuova_domanda> HTTP/1.1
Host: www.example.com/

Per sovrascrivere una risorsa già esistente:

PUT /domande/<domanda_esistente> HTTP/1.1
Host: www.example.com/

Hai notato una differenza particolare?

No?

Con il metodo PUT sei obbligato a specificare la risorsa su cui vuoi agire, quindi devi rendere esplicito l’URL dell’oggetto che intendi creare oppure modificare!

Per usare la PUT nel sistema REST, ti offro un’altra prospettiva

Abbiamo capito che per usare il metodo “PUT” nel sistema REST, specie se le API sono le tue la risorsa deve già esistere.

Ma che cosa significa esattamente questa frase?

Il metodo PUT rimpiazza completamente la risorsa su cui sta eseguendo il metodo.

In altre parole, la prima differenza tra PUT e POST è senza dubbio che non puoi usare il metodo PUT se la risorsa non esiste.

La seconda è questa: usando il metodo PUT su una risorsa, la andrai a sostituire integralmente.

Questo significa che, se per esempio agisci su una tabella che rappresenta degli oggetti e modifichi quello con ID 25 per esempio, andrai a modificare tutti i campi in un sol colpo.

E come dicevamo prima, per questo è idempotente: a meno che tu, decida di eseguire nuovamente il metodo PUT con valori differenti.

Ma poi c’è altro?

Diciamo di sì. Come ti raccontavo all’inizio dell’articolo scrivo all’interno di questo blog perché aiutarti a padroneggiare l’informatica è un grandissimo piacere per me!

Quale miglior modo di farmelo capire con un commento proprio qui sotto, oppure iscrivendoti alla mia newsletter per rimanere sempre aggiornato? 🙂

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più