Tutorial Che cos’è l’ HTTP ?

0
2234

Oggi vi vogliamo spiegare in modo molto leggero che cos’è l’ HTTP  e come funziona.

HTTP è semplice! Hypertext Transfer Protocol è un linguaggio testuale che consente a due macchine di comunicare tra loro.

cos'è l’ HTTP

 

E sebbene il linguaggio usato in realtà sia un po’ più formale, è ancora assolutamente semplice.  HTTP è il termine usato per descrivere tale semplice linguaggio testuale. Non importa in quale linguaggio si sviluppi sul web, lo scopo di un server è sempre quello di interpretare semplici richieste testuali e restituire semplici risposte testuali.

Che lo si comprenda o meno, HTTP è qualcosa che si usa ogni giorno.
Passo 1: il client invia una richiesta
Ogni conversazione sul web inizia con una richiesta. La richiesta è un messaggio testuale creato da un client (per esempio un browser,  un’applicazione mobile, ecc.) in uno speciale formato noto come HTTP.
Il client invia la richiesta a un server e quindi attende una risposta.
Diamo uno sguardo alla prima parte dell’interazione (la richiesta) tra un browser e il server web:

http_client_server

 

Nel gergo di HTTP, questa richiesta apparirebbe in realtà in questo modo:

GET / HTTP/1.1
Host: xkcd.com
Accept: text/html
User-Agent: Mozilla/5.0 (Macintosh)

Questo semplice messaggio comunica ogni cosa necessaria su quale risorsa esattamente il client sta richiedendo. La prima riga di ogni richiesta HTTP è la più importante e contiene due cose: l’URI e il metodo HTTP.

L’URI (p.e. /, /contact, ecc.) è l’indirizzo univoco o la locazione che identifica la risorsa che il client vuole. Il metodo HTTP (p.e. GET) definisce cosa si vuole fare con la risorsa. I metodi HTTP sono verbi della richiesta e definiscono i pochi modi comuni in cui si può agire sulla risorsa:

GET            Recupera la risorsa dal server
POST          Crea una risorsa sul server
PUT            Aggiorna la risorsa sul server
DELETE   Elimina la risorsa dal server

Tenendo questo a mente, si può immaginare come potrebbe apparire una richiesta HTTP per cancellare una specifica voce di un blog, per esempio:
DELETE /blog/15 HTTP/1.1

In aggiunta alla prima linea, una richiesta HTTP contiene sempre altre linee di informazioni, chiamate header. Gli header possono fornire un ampio raggio di informazioni, come l’Host richiesto, i formati di risposta accettati dal client (Accept) e l’applicazione usata dal client per eseguire la richiesta (User-Agent).

Passo 2: Il server restituisce una risposta
Una volta che il server ha ricevuto la richiesta, sa esattamente la risorsa di cui il client ha bisogno (tramite l’URI) e cosa vuole fare il client con tale risorsa (tramite il metodo). Per esempio, nel caso di una richiesta GET, il server prepara la risorsa e la restituisce in una risposta HTTP. Consideriamo la risposta del server  web:

http_server_client

 

Tradotto in HTTP, la risposta rimandata al browser assomiglierà a questa:

HTTP/1.1 200 OK
Date: Sat, 02 Apr 2011 21:05:05 GMT

Server: lighttpd/1.4.19
Content-Type: text/html

<html>
<!– … HTML della vignetta di xkcd –>
</html>

La risposta HTTP contiene la risorsa richiesta (il contenuto HTML, in questo caso). oltre che altre informazioni sulla risposta. La prima riga è particolarmente importante e contiene il codice di stato della risposta HTTP (200, in questo caso). Il codice di stato comunica il risultato globale della richiesta al client. La richiesta è andata a buon fine? C’è stato un errore? Diversi codici di stato indicano successo, errore o che il client deve fare qualcosa (p.e. rimandare a un’altra pagina).
Come la richiesta, una risposta HTTP contiene parti aggiuntive di informazioni, note come header. Per esempio, un importante header di risposta HTTP è Content-Type.

Il corpo della risorsa stessa potrebbe essere restituito in molti formati diversi, inclusi HTML, XML o JSON, mentre l’header Content-Type usa i tipi di media di Internet, come text/html, per dire al client quale formato è restituito.
Esistono molti altri header, alcuni dei quali molto potenti. Per esempio, alcuni header possono essere usati per creare un potente sistema di cache.

Richieste, risposte e sviluppo web
Questa conversazione richiesta-risposta è il processo fondamentale che guida tutta la comunicazione sul web. Questo processo è tanto importante e potente, quanto inevitabilmente semplice.

L’aspetto più importante è questo: indipendentemente dal linguaggio usato, il tipo di applicazione costruita (web, mobile, API JSON) o la filosofia di sviluppo seguita, lo scopo finale di un’applicazione è sempre quello di capire ogni richiesta e creare e restituire un’appropriata risposta.

Se qualcosa non è chiaro su cos’è l’ HTTP fateci sapere.