Richieste HTTP: struttura e metodi
Prima di iniziare: le parole della lezione
- URL, host e percorso
- L’URL identifica una risorsa: schema, host, eventuale porta, percorso e query. L’host identifica il computer o servizio di destinazione; il percorso identifica la risorsa presso quel servizio.
- Body, Content-Type e Accept
- Il body è il contenuto del messaggio.
Content-Typedescrive il formato inviato;Acceptindica i formati di risposta accettati dal client. - HTTPS e TLS
- HTTPS è HTTP protetto da TLS, che cifra il trasporto e autentica normalmente il server tramite certificati.
- Idempotenza
- Un’operazione è idempotente se ripeterla produce lo stesso effetto finale sullo stato desiderato. Non implica risposte identiche a ogni chiamata.
Una richiesta HTTP include metodo, percorso, header e opzionalmente un body. Una risposta include codice di stato, header e body. HTTP è un protocollo richiesta-risposta; HTTPS aggiunge la protezione TLS.
| Metodo | Uso tipico | Esempio |
|---|---|---|
| GET | Leggere | GET /api/persone |
| POST | Creare | POST /api/persone |
| PUT | Sostituire/aggiornare completamente | PUT /api/persone/1 |
| PATCH | Modificare parzialmente | PATCH /api/persone/1 |
| DELETE | Eliminare | DELETE /api/persone/1 |
Codici frequenti: 200 OK, 201 creato, 204 riuscito senza contenuto, 400 richiesta errata, 404 non trovato, 500 errore del server.
curl -i http://localhost:3000/
Esempio aggiuntivo: un browser che apre un URL invia normalmente una GET; per inviare JSON e scegliere altri metodi puoi usare curl, Postman o il fetch() del frontend.
Chi fa cosa, e perché
Il browser invia la richiesta, il server la interpreta e costruisce la risposta. Aprire una pagina può produrre diverse richieste: documento HTML, foglio di stile, JavaScript, immagini e favicon. Un errore sulla favicon non significa necessariamente che la route principale abbia fallito.
I metodi esprimono l’intenzione: GET legge, POST richiede un’elaborazione o una creazione, PUT sostituisce, PATCH modifica parzialmente, DELETE elimina. Una risposta 404 significa che il server ha risposto ma non ha trovato quella risorsa; una connessione rifiutata significa invece che non sei riuscito a contattarlo su quell’indirizzo e porta.
Un altro esempio guidato
GET /api/persone?limite=2 HTTP/1.1
Host: localhost:3000
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{"dati":[{"id":1,"nome":"Anna"}]}
Come leggerlo e risultato atteso. È uno schema didattico di richiesta e risposta HTTP/1.1, non un file JavaScript da avviare. La riga iniziale identifica metodo e destinazione; la riga vuota separa header e body. Il codice 200 appartiene alla risposta, non alla richiesta.
Prova tu. Apri gli strumenti sviluppatore del browser, scheda Rete/Network: identifica richiesta, status, Content-Type e contenuto della risposta. Non confondere il testo di un errore JSON con lo status HTTP.