HTTP patch: che cos’è e come funziona

di Lorenzo Neri

HTTP patch: che cos’è e come funziona? In questo articolo scoprirai come funziona il metodo patch all’interno del protocollo HTTP, che cos’è, a cosa serve e altre particolarità!

Nel mondo dello sviluppo web è ormai diventato impossibile fare a meno del protocollo HTTP: governa pressoché la quasi totalità dei servizi web che usiamo ogni giorno.

All’interno di esso, ci sono diversi metodi con i quali è possibile mettere in comunicazione client e server e fra tutti quelli che mette a disposizione l’HTTP c’è il metodo patch: che cos’è e come funziona? Penso sia giunto il momento di parlartene, ma prima… Permettimi di presentarmi!

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

Ho deciso di aprire questo blog affinché persone come te potessero trovare una soluzione ai problemi legati al codice: diciamo più, problemi che ho trovato lungo la mia strada.

Sì, devi sapere che questi articoli derivano dalla mia stessa esperienza lavorativa, ad un certo punto mi sono detto: “Perché non scrivere articoli e aiutare gli altri?”.

Ciò detto, veniamo a noi.

HTTP patch: che cos’è?

Partiamo dalle basi: che cos’è il metodo patch all’interno del protocollo HTTP.

Come dicevo prima, il protocollo HTTP basa il suo funzionamento su diversi metodi affinché client e server possano scambiarsi informazioni.

Fra questi, c’è appunto il metodo patch che permette di fare una cosa in particolare.

HTTP patch: che cos’è l’abbiamo capito, ma come funziona?

Di per sé funziona “con le basi del metodo POST e del metodo PUT”, ma manca un dettaglio.

Per “basi” intendo dire che tutti e tre questi metodi lavorano e agiscono su una cosa comune: una risorsa.

Cosa intendiamo per risorsa?

Il metodo PATCH così come i metodi POST e PUT, permettono di applicare delle modifiche a delle informazioni: in modo differente.

Sulle differenze ci arriviamo dopo, te lo prometto, iniziamo a comprendere come funziona il metodo PATCH con un esempio.

L’esempio che useremo è il seguente: abbiamo un sito corredato di database.

Il database al suo interno ha una tabella usata per raccogliere le informazioni di diverse immagini.

Ogni immagine ha un identificativo, un link, un nome, un’altezza e una larghezza: questi sono i cinque attributi che caratterizzano l’immagine all’interno del database.

Di per sé l’immagine stessa rappresenta la risorsa su cui vogliamo agire!

Il metodo POST, di base, permette di creare la risorsa: in parole povere, tramite il metodo post e il backend del nostro sito web, inviamo le informazioni della nuova immagine da aggiungere alla tabella di cui stiamo parlando.

Ammettiamo invece di avere un’immagine già esistente nel database, te la mostro in formato JSON:

{
  "id": 1,
  "link": "https://immagini.com/img1.png",
  "nome": "img1.png",
  "altezza": 450,
  "larghezza" 520
}

Ad un certo punto, ci rendiamo conto che la larghezza dell’immagine è sbagliata: è larga in realtà 600px.

A questo punto, possiamo fare una cosa: possiamo agire sul singolo attributo “larghezza”.

E come possiamo fare?

Tramite l’identificativo dell’immagine stessa possiamo eseguire una chiamata PATCH al nostro sito web.

E sta qua il suo funzionamento principale.

Il metodo PATCH modifica solo le parti che ci interessano di una risorsa già esistente attraverso il suo identificativo

Già qui, abbiamo scoperto come funziona il metodo PATCH nel mondo HTTP.

In sintesi, avendo una risorsa già esistente nel tuo sistema, il metodo PATCH ti permette di modificarla parzialmente a seconda delle tue necessità.

E di fatto, quando eseguiamo una chiamata PATCH NON passiamo nel corpo della stessa l’intera risorsa: ma solo gli attributi che siamo intenzionati a modificare!

HTTP PUT vs PATCH: che differenze ci sono fra i due?

Come ti avevo promesso qualche paragrafo fa, una volta capito che cos’è e come funziona il metodo PATCH in sé, è giusto capire in che cosa è differente dal metodo PUT.

Partiamo da che cosa hanno in comune.

Entrambi i metodi agiscono su una risorsa già esistente.

Questo significa che, se la risorsa con l’identificativo specificato durante la chiamata NON esiste beh.. Nessuna modifica verrà applicata alla stessa. Puoi forse modificare ciò che non esiste?

Quindi, modificano entrambi cose già presenti: ma come?

Abbiamo capito precedentemente che usando PATCH modifichiamo parzialmente la risorsa, il metodo PUT la modifica integralmente.

O meglio detto, rimpiazza completamente i valori della risorsa stessa: identificativo escluso.

E ora…

POST vs PATCH: e fra loro due che cosa cambia?

Il metodo POST, a meno di utilizzi differenti da quelli previsti, si dovrebbe limitare a creare una risorsa: è il metodo usato per aggiungere nuove informazioni in un database per esempio.

Tuttavia, può essere usato ugualmente per modificare informazioni già esistenti, MA c’è un “ma”.

Così come avviene con il metodo PUT, agisce a livello globale sulla risorsa stessa: il che significa che la sovrascrive.

E di fatto, in un altro mio articolo ho parlato della differenza fra metodo PUT e POST che trovi qui!

PATCH vs PUT vs POST: conclusione

In conclusione come hai notato, le differenze stanno principalmente nel come modificano risorse già esistenti oppure da creare ex novo.

E di fatto, tutti e tre questi metodi seppur simili di primo acchito, hanno differenze sottili fra di loro.

Continua a scoprire di più con questi articoli!

2 commenti

Antonio Musarra 13/12/2021 - 18:26

Ottima descrizione del metodo HTTP/1.1 Patch.
Bisogna che poi lato server-side sia implementato correttamente. Altro fatto da sottolineare è che il metodo Patch non è idempotent (https://developer.mozilla.org/en-US/docs/Glossary/Idempotent).

Rispondi
Lorenzo Neri 14/12/2021 - 15:22

Buongiorno Antonio e grazie mille per il tuo commento!

Certo, è un dettaglio importante che effettivamente perché no: perchè non aggiungerlo 😉

Grazie e a presto!

Rispondi

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ù