Vai al contenuto
Home » Notes » Richieste e Risposte HTTP: Metodi GET, POST, PUT, HEAD

Richieste e Risposte HTTP: Metodi GET, POST, PUT, HEAD

Come forse sai, il web si basa sul protocollo HTTP per la trasmissione di risorse.
HTTP è un protocollo client-server: questo significa che il client invia delle richieste ad un server che è in ascolto, il quale elabora la richiesta e poi invia una risposta al client.
Oggi vediamo cosa sono le richieste e le risposte HTTP, come sono formate,
cosa sono i metodi HTTP e quali sono le caratteristiche dei principali metodi HTTP: GET, POST, PUT, HEAD e DELETE.

Schema protocollo HTTP del Web

Anche per visualizzare la pagina web che stai leggendo ora, il tuo dispositivo ha lanciato una richiesta HTTP: il browser del tuo computer o smartphone ha chiesto al server del mio sito di ricevere questa pagina, l’ha ottenuta e infine l’ha disegnata sul tuo schermo.

Spesso per comporre una sola pagina web sono necessarie più richieste HTTP: potrebbe servire una richiesta per caricare la struttura della pagina, una richiesta per caricare i contenuti multimediali e una richiesta per caricare una vignetta pubblicitaria.

Per questo schema realizzato con Canva ho preso spunto da “An overview of HTTP” di MDN web docs,

Componenti della richiesta HTTP

Puoi pensare ad una richiesta HTTP come un “messaggio” composto da da :

  • metodo: tipo di azione che il client richiede al server di eseguire
  • URI: identificativo della risorsa locale al server
  • Version: versione di HTTP
  • Header: righe di testo con specifiche informazioni aggiuntive (ad es: sul tipo di file richiesto, sul caching, sull’autenticazione..)
  • Body: il corpo della richiesta, può contenere eventuali dati da inviare al server.

La richiesta giunge al server che la elabora e a sua volta invia una risposta HTTP al client. Anche la risposta HTTP è una sorta di “messaggio”, composto da:

  • status code: un codice che identifica l’esito della richiesta (lista completa qui)
    • 100 a 199: questo genere di status codes identifica una risposta informazionale, ovvero una risposta che il server trasmette al client per avvisarlo che la sua richiesta è in fase di processing
    • 200 a 299: gli status codes del tipo 2XX sono status codes di successo e comunicano al client che la sua richiesta è andata a buon fine
    • 300 a 399: status code di redirect, ovvero il server comunica la sua nuova posizione
    • 400 a 499: errore lato client, la richiesta non può essere completata per un errore nei parametri forniti o di autenticazione
    • 500 a 599: errore lato server
  • versione: versione di HTTP
  • Header: righe di testo con specifiche informazioni aggiuntive
  • body: il contenuto della risposta, ad esempio qui si troveranno i file che il client ha chiesto di ricevere

Metodi HTTP: GET, POST, PUT, DELETE, HEAD

Il metodo GET si utilizza per richiedere al server di ottenere una certa risorsa. Se, ad esempio, un client deve fare uso di un file X che si trova sul server, farà una richiesta GET al server per riceverlo.

Il metodo HEAD è come GET ma restituendo solo l’header, quindi senza caricare la risorsa.
Il vantaggio è il minor consumo di potenza computazionale e banda se quella risorsa non servisse.
Ad esempio, immagina di voler solo controllare se sul server esista il file X, dal peso di 1GB. Con una richiesta GET il server dovrebbe caricare interamente quel file e restituirtelo nella risposta. Il file rimarrebbe poi inutilizzato perchè lo scopo della richiesta del client era solamente quello di voler verificarne l’esistenza.
Con HEAD, quindi, il server restituisce alcune informazioni chiave della risorsa, ma senza caricarla.

PUT è il metodo utilizzato per aggiornare una risorsa sul server. Il client deve indicare la risorsa da aggiornare e invia i dati aggiornati nel body della richiesta. Se la risorsa non esiste, viene creata.
Immagina un server che permette di aggiungere e modificare dei promemoria.
Immagina il PUT come se il client dicesse al server “tieni, questi sono i dati del promemoria25, aggiornalo o se non esiste inseriscilo in coseDaFare/promemoria25”.

POST è un metodo utilizzato per chiedere al server di generare una nuova risorsa. Il client indica al server tutti i dati della nuova risorsa.
Consideriamo l’esempio del server dei promemoria.
Immagina il POST come se il client dicesse al server “tieni, questi sono i dati di un nuovo promemoria da creare, mettilo in coseDaFare/”. Sarà poi compito del server scegliere di posizionare il nuovo promemoria, ad esempio, in “coseDaFare/promemoria28”.

Infine, DELETE è un metodo utilizzato per ordinare al server la cancellazione di una determinata risorsa.

Proprietà di sicurezza e idempotenza

Sicurezza e idempotenza sono due concetti fondamentali dei metodi delle richieste HTTP. Ecco quali metodi sono idempotenti e sicuri

Cosa vuol dire sicurezza di un metodo HTTP?
Per sicurezza di un metodo HTTP intendiamo la caratteristica di quel metodo di non alterare lo stato del server.

Cosa vuol dire idempotenza di un metodo HTTP?
Un metodo HTTP si dice idempotente se, lanciando la stessa richiesta più volte, si ottiene lo stesso risultato di fare quella richiesta una sola volta.

metodo HTTPsicuroidempotente
HEAD
GET
PUTno
DELETEno
POSTnono

Prosegui la lettura con: storia e caratteristiche di HTML

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *