JavaScript fetch(): come fare richieste API

Loading

fetch() è la funzione moderna di JavaScript per comunicare con server e API. Con essa puoi recuperare dati, inviarli, gestire risposte JSON e lavorare in modo asincrono senza ricaricare la pagina.

Cos’è fetch()

La funzione fetch() viene usata per fare richieste HTTP in JavaScript. Rispetto alle vecchie tecniche come XMLHttpRequest, ha una sintassi più pulita e restituisce una promessa, quindi si integra bene con then() e async/await.developers.

Un esempio molto semplice è questo:

fetch("https://jsonplaceholder.typicode.com/posts")
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

In questo caso, JavaScript invia una richiesta al server, riceve la risposta e la converte in JSON.

Come funziona

fetch() restituisce un oggetto di risposta, non direttamente i dati. Per ottenere i contenuti, di solito bisogna prima verificare la risposta e poi chiamare response.json() se il formato è JSON.

Ecco il flusso base:

  1. invii la richiesta;
  2. ricevi la risposta;
  3. controlli se la risposta è valida;
  4. trasformi i dati nel formato che ti serve.

Esempio con async/await

Questo stile è spesso più leggibile:

async function caricaPost() {
  try {
    const response = await fetch("https://jsonplaceholder.typicode.com/posts");

    if (!response.ok) {
      throw new Error("Errore nella richiesta");
    }

    const dati = await response.json();
    console.log(dati);
  } catch (errore) {
    console.error("Si è verificato un errore:", errore);
  }
}

caricaPost();

Qui response.ok aiuta a intercettare risposte HTTP non corrette, mentre try/catch gestisce eventuali errori.

Richieste GET e POST

fetch() si usa molto per leggere dati con una GET, ma può anche inviare dati con una POST. In quel caso devi specificare il metodo, gli header e il body della richiesta.

GET

fetch("https://jsonplaceholder.typicode.com/posts/1")
  .then(response => response.json())
  .then(data => console.log(data));

POST

fetch("https://jsonplaceholder.typicode.com/posts", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    title: "Nuovo post",
    body: "Contenuto di esempio",
    userId: 1
  })
})
  .then(response => response.json())
  .then(data => console.log(data));

Nel caso della POST, i dati vengono convertiti in stringa JSON con JSON.

Errore comune da evitare

Un errore frequente è pensare che fetch() dia errore automaticamente quando il server risponde con codice 404 o 500. In realtà, la promessa viene comunque risolta: bisogna controllare manualmente response.ok o response.status.

Questo è importante perché una richiesta può “andare a buon fine” dal punto di vista tecnico, ma restituire comunque una risposta HTTP sbagliata.

Esempio pratico per il blog

Se vuoi mostrare un elenco di dati nel sito, fetch() è perfetto. Ad esempio puoi prendere un array di post da un’API e stamparli nella pagina:

async function mostraPost() {
  const response = await fetch("https://jsonplaceholder.typicode.com/posts");
  const post = await response.json();

  const lista = document.getElementById("lista-post");
  lista.innerHTML = post
    .slice(0, 5)
    .map(item => `<li>${item.title}</li>`)
    .join("");
}

mostraPost();

Questo tipo di esempio è ottimo per un articolo tecnico perché è semplice, utile e subito applicabile.

Conclusione

fetch() è uno degli strumenti più importanti di JavaScript moderno. Ti permette di lavorare con API in modo chiaro, flessibile e più elegante rispetto alle tecniche più vecchie. Se vuoi creare siti dinamici, form interattivi o pagine che leggono dati esterni, impararlo è quasi obbligatorio.