Fetch e richieste HTTP
Richieste HTTP con fetch
Vediamo come JavaScript permette di inviare e ricevere dati da un server tramite il metodo fetch()
, uno strumento moderno e più leggibile rispetto a XMLHttpRequest, utile per applicazioni web dinamiche.
Richieste HTTP con fetch
Il metodo fetch()
permette di effettuare richieste HTTP dal browser verso un server.
È uno strumento moderno che restituisce una Promise, quindi funziona in modo asincrono.
Le richieste HTTP possono essere di diversi tipi, tra cui GET, POST, PUT, PATCH e DELETE, a seconda dell’operazione da eseguire sui dati.
Le più comuni sono GET, utilizzata per recuperare dati, e POST, usata per inviare dati al server.
La differenza principale tra GET e POST è che con GET i dati vengono passati nell’URL (quindi visibili),
mentre con POST viaggiano nel corpo della richiesta, risultando più adatto per l’invio di informazioni sensibili.
Esempio di richiesta GET con fetch()
La richiesta GET serve per l'invio e recupero dati da un server o da un’API. Nell’esempio seguente preleviamo un post di esempio da un’API pubblica di test.
Codice Esempio: GET con fetch

fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(response => response.json()) // convertiamo la risposta in JSON
.then(data => {
console.log("Titolo del post:", data.title);
console.log("Contenuto:", data.body);
})
.catch(error => {
console.error("Errore nella richiesta GET:", error);
});
Risultato: nella console verranno stampati il titolo e il contenuto del post ottenuto dall’API. La richiesta è in sola lettura, quindi non modifica nulla lato server.
Esempio di richiesta POST con fetch()
La richiesta POST serve per l'invio e recupero dati da un server, ad esempio quando si compila un form. È più sicura del GET perché i dati non compaiono nell’URL. Nell’esempio seguente creiamo un nuovo post.
Codice Esempio: POST con fetch

fetch('https://jsonplaceholder.typicode.com/posts', {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
title: "Nuovo post",
body: "Questo è il contenuto del post",
userId: 1
})
})
.then(response => response.json()) // il server risponde con i dati ricevuti
.then(data => {
console.log("Post creato con ID:", data.id);
console.log("Titolo:", data.title);
})
.catch(error => {
console.error("Errore nella richiesta POST:", error);
});
Risultato: nella console apparirà un nuovo oggetto post con un ID generato dal server. Questa operazione simula l’inserimento di dati in un database.
Uso di fetch con async/await
Scrivere le richieste con async/await rende il codice più chiaro. Gli esempi mostrano la stessa logica di GET e POST con una sintassi più leggibile.
Codice Esempio: GET con async/await

async function getPost() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
const data = await response.json();
console.log("Titolo del post:", data.title);
console.log("Contenuto:", data.body);
} catch (error) {
console.error("Errore nella richiesta GET:", error);
}
}
getPost();
Codice Esempio: POST con async/await

async function createPost() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/posts', {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
title: "Titolo async/await",
body: "Questo è il contenuto del post inviato con async/await",
userId: 2
})
});
const data = await response.json();
console.log("Post creato con ID:", data.id);
console.log("Titolo:", data.title);
} catch (error) {
console.error("Errore nella richiesta POST:", error);
}
}
createPost();
GET vs POST in breve:
- GET: i dati viaggiano nell’URL → utile per ricerche veloci e dati pubblici, ma poco sicuro.
- POST: i dati viaggiano nel corpo della richiesta → preferibile per login, form e dati sensibili.
Tabella riassuntiva
Metodo | Descrizione | Quando usarlo |
---|---|---|
GET | Recupera dati dal server | Quando servono dati in sola lettura |
POST | Invia nuovi dati al server | Per form, login, registrazione, salvataggi |
PUT | Aggiorna interamente una risorsa | Quando serve sovrascrivere un oggetto |
PATCH | Aggiorna solo parte di una risorsa | Quando serve modificare campi specifici |
DELETE | Elimina una risorsa | Per cancellare elementi dal database |
Considerazioni
Il metodo fetch() è lo standard moderno per le richieste HTTP in JavaScript.
- GET è ideale per leggere dati, ma poco sicuro per l’invio di informazioni (i parametri restano visibili nell’URL).
- POST è preferibile per inviare dati, soprattutto quando riguardano sicurezza o privacy, poiché i parametri vengono trasmessi nel corpo della richiesta.
- Con async/await il codice diventa più leggibile e semplice da gestire.
Infine, è importante gestire sempre gli errori con try/catch
o .catch()
per evitare comportamenti imprevisti.