5.2.1 – Protocollo HTTP

Obiettivi della lezione:

  • Comprendere il modello client-server. Gli studenti impareranno a identificare e descrivere il funzionamento del modello client-server nel contesto del protocollo HTTP.
  • Analizzare le HTTP Request e Response. Gli studenti acquisiranno conoscenze sul flusso di comunicazione HTTP, comprendendo la struttura delle richieste e delle risposte HTTP.
  • Esaminare i metodi HTTP e i codici di stato. Gli studenti comprenderanno i diversi metodi HTTP e i codici di stato utilizzati per indicare il risultato delle richieste HTTP.

Introduzione al Protocollo HTTP

Il protocollo HTTP (HyperText Transfer Protocol) è la base del World Wide Web e permette la comunicazione tra client (browser web) e server. È un protocollo di livello applicazione utilizzato per la trasmissione di ipertesti e per l’interazione tra sistemi distribuiti. HTTP è stato progettato per essere semplice e flessibile, permettendo l’estensione delle funzionalità e l’integrazione con altre tecnologie.

Modello client-server

Nel modello client-server, il client invia richieste al server e il server risponde alle richieste del client. Questo modello è utilizzato per la maggior parte delle applicazioni web, dove il client è tipicamente un browser web e il server è un server web che ospita le pagine e le risorse richieste.

  • Client: Il client è l’entità che effettua una richiesta per una risorsa. Nel contesto del web, il client è solitamente un browser che invia richieste HTTP al server.
  • Server: Il server è l’entità che risponde alla richiesta del client, fornendo la risorsa richiesta o un messaggio di errore se la risorsa non è disponibile.

HTTP Request e Response

La comunicazione HTTP avviene tramite due tipi principali di messaggi: le richieste (request) e le risposte (response).

HTTP Request

Un messaggio di richiesta HTTP è composto da:

  1. Linea di richiesta: Specifica il metodo HTTP, l’URL della risorsa richiesta e la versione del protocollo HTTP.
    • Esempio: GET /index.html HTTP/1.1
  2. Intestazioni di richiesta: Forniscono informazioni aggiuntive sul client e sulla richiesta.
    • Esempio: Host: www.example.com
  3. Corpo della richiesta (opzionale): Contiene i dati da inviare al server, utilizzato principalmente con i metodi POST e PUT.

HTTP Response

Un messaggio di risposta HTTP è composto da:

  1. Linea di stato: Include la versione del protocollo HTTP, un codice di stato e un messaggio descrittivo.
    • Esempio: HTTP/1.1 200 OK
  2. Intestazioni di risposta: Forniscono informazioni aggiuntive sul server e sulla risposta.
    • Esempio: Content-Type: text/html
  3. Corpo della risposta (opzionale): Contiene i dati della risorsa richiesta, come il contenuto di una pagina web.

Metodi HTTP

I metodi HTTP indicano l’azione che il client desidera eseguire sulla risorsa identificata dall’URL. Ecco i metodi più comuni:

  • GET: Richiede una rappresentazione di una risorsa specificata. Le richieste GET non devono mai causare modifiche allo stato del server.
    • Esempio: GET /index.html
  • POST: Invia dati al server per elaborazione, causando spesso una modifica allo stato del server o un effetto collaterale.
    • Esempio: POST /submit-form
  • PUT: Carica una rappresentazione della risorsa specificata. Se la risorsa non esiste, può essere creata.
    • Esempio: PUT /api/resource/1
  • DELETE: Elimina la risorsa specificata.
    • Esempio: DELETE /api/resource/1
  • HEAD: Simile a GET, ma chiede solo le intestazioni della risposta senza il corpo.
    • Esempio: HEAD /index.html
  • OPTIONS: Descrive le opzioni di comunicazione per la risorsa target.
    • Esempio: OPTIONS /api/resource

Codici di stato HTTP

I codici di stato HTTP indicano il risultato della richiesta HTTP. Sono divisi in cinque classi:

  • 1xx (Informativi): Indicano che la richiesta è stata ricevuta e il processo continua.
    • Esempio: 100 Continue
  • 2xx (Successo): Indicano che la richiesta è stata ricevuta, compresa e accettata con successo.
    • Esempio: 200 OK
  • 3xx (Redirezioni): Indicano che è necessario un ulteriore passaggio per completare la richiesta.
    • Esempio: 301 Moved Permanently
  • 4xx (Errori del client): Indicano che la richiesta contiene una sintassi errata o non può essere soddisfatta.
    • Esempio: 404 Not Found
  • 5xx (Errori del server): Indicano che il server ha fallito nel soddisfare una richiesta apparentemente valida.
    • Esempio: 500 Internal Server Error

Esercitazioni pratiche

  1. Esercizio di analisi delle richieste e risposte HTTP:
    • Utilizzare strumenti come Postman o il Developer Tools dei browser per inviare richieste HTTP a un server e analizzare le risposte ricevute. Gli studenti dovranno identificare le varie parti delle richieste e delle risposte, comprendendo il significato di ciascun elemento.
  2. Esercizio sui metodi HTTP:
    • Creare una semplice applicazione web che utilizza diversi metodi HTTP per interagire con un server. Gli studenti dovranno implementare endpoint per GET, POST, PUT e DELETE, testando le loro funzionalità utilizzando il browser o strumenti di test API.
  3. Esercizio sui codici di stato HTTP:
    • Analizzare una serie di scenari di errori comuni (come pagine non trovate, errori del server, ecc.) e comprendere i codici di stato restituiti dal server. Gli studenti dovranno documentare i codici di stato appropriati per ciascun scenario e spiegare il loro significato.