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:
- 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
- Esempio:
- Intestazioni di richiesta: Forniscono informazioni aggiuntive sul client e sulla richiesta.
- Esempio:
Host: www.example.com
- Esempio:
- 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:
- Linea di stato: Include la versione del protocollo HTTP, un codice di stato e un messaggio descrittivo.
- Esempio:
HTTP/1.1 200 OK
- Esempio:
- Intestazioni di risposta: Forniscono informazioni aggiuntive sul server e sulla risposta.
- Esempio:
Content-Type: text/html
- Esempio:
- 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
- Esempio:
- POST: Invia dati al server per elaborazione, causando spesso una modifica allo stato del server o un effetto collaterale.
- Esempio:
POST /submit-form
- Esempio:
- PUT: Carica una rappresentazione della risorsa specificata. Se la risorsa non esiste, può essere creata.
- Esempio:
PUT /api/resource/1
- Esempio:
- DELETE: Elimina la risorsa specificata.
- Esempio:
DELETE /api/resource/1
- Esempio:
- HEAD: Simile a GET, ma chiede solo le intestazioni della risposta senza il corpo.
- Esempio:
HEAD /index.html
- Esempio:
- OPTIONS: Descrive le opzioni di comunicazione per la risorsa target.
- Esempio:
OPTIONS /api/resource
- Esempio:
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
- Esempio:
- 2xx (Successo): Indicano che la richiesta è stata ricevuta, compresa e accettata con successo.
- Esempio:
200 OK
- Esempio:
- 3xx (Redirezioni): Indicano che è necessario un ulteriore passaggio per completare la richiesta.
- Esempio:
301 Moved Permanently
- Esempio:
- 4xx (Errori del client): Indicano che la richiesta contiene una sintassi errata o non può essere soddisfatta.
- Esempio:
404 Not Found
- Esempio:
- 5xx (Errori del server): Indicano che il server ha fallito nel soddisfare una richiesta apparentemente valida.
- Esempio:
500 Internal Server Error
- Esempio:
Esercitazioni pratiche
- Esercizio di analisi delle richieste e risposte HTTP:
- Utilizzare strumenti come
Postman
o ilDeveloper 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.
- Utilizzare strumenti come
- 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.
- 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.