Ottenere JSON dal Web con Node.js

Recentemente ho ripreso in mano una mia applicazione scritta in Node.js che per funzionare ottiene i dati da un file JSON nel web.

Originariamente avevo utilizzato snekfetch, ma dopo aver scoperto che era stato deprecato, mi sono messo alla ricerca di una nuova soluzione, e ne ho trovate anche più di una!

#Il pacchetto “node-fetch”

Il pacchetto node-fetch fa esattamente quello che suggerisce il nome: aggiunge window.fetch a Node.js.

Per l’installazione basterà eseguire il comando npm install node-fetch e poi potrete impostare il modulo nel vostro progetto:

const fetch = require('node-fetch');

Poi potremmo effettuare delle richieste come nel seguente esempio:

fetch('https://api.github.com/users/github')
  .then(res => res.json())
  .then((json) => {
    console.log(json);
    // Cose da fare con il JSON
  });

Per maggiori informazioni potete ovviamente consultare la documentazione ufficiale.

#I moduli HTTP e HTTPS di Node.js

In Node.js sono presenti dei moduli http e https. In questo esempio utilizzeremo il metodo GET presente nel modulo https. Ecco il codice:

const https = require('https');

https.get('https://api.github.com/users/github', (res) => {
  let body = '';

  res.on('data', (d) => {
    body += d;
  }

  res.on('end', () => {
    let json = JSON.parse(body);
    // Cose da fare con il JSON
  }

}).on('error', (e) => {
  console.error(e);
});

In questo pezzo di codice sono state fatte varie cose… All’inizio viene ovviamente importato il modulo https con require(). Poi inizializziamo una richiesta GET con https.get(url, (res) => {}). All’interno del callback creiamo una variabile vuota chiamata body a cui aggiungiamo il testo della risposta che otteniamo.

Quando la risposta ottiene dei dati (data), vengono aggiunti alla variabile body. Raggiunta la fine della risposta (end) proviamo a trasformare in JSON il testo ottenuto come risposta. Potrebbe essere aggiunto un blocco try/catch per gestire eventuali errori durante la conversione in JSON.

Infine, l’ultima cosa che avviene è un try/catch per gestire eventuali errori nella richiesta iniziale.

#Conclusione

Come abbiamo visto, in Node.js ci sono più modi di fare una richiesta per ottenere un file JSON.

Io personalmente utilizzo il primo metodo (node-fetch) dato che è a mio parere più semplice ed intuitivo e secondo alcune ricerche è più veloce rispetto al secondo, ma non lo posso affermare al 100%.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *