Node.js: parsing di un feed JSON remoto

Node.js: parsing di un feed JSON remoto

Node.js permette di eseguire normali richieste HTTP remote. Possiamo utilizzare il modulo http per reperire il contenuto di un feed JSON dalle API di un qualsiasi web service, come ad esempio quelle di Twitter o Vimeo.

Creiamo un file JavaScript che chiameremo json.js. Per prima cosa dobbiamo includere il modulo http:


var http = require('http');

Quindi definiamo i parametri per la nostra richiesta GET:


var options = {
  host: 'vimeo.com',
  port: 80,
  path: '/api/v2/gabrieleromanato/videos.json',
  method: 'GET'
};

In pratica stiamo effettuando una semplice richiesta HTTP per l'URL http://vimeo.com/api/v2/gabrieleromanato/videos.json. La richiesta verrà gestita tramite il metodo request() del modulo http:


var req = http.request(options, function(res) {
   // gestione dei dati
});

All'interno del callback possiamo gestire l'oggetto res con i metodi e le proprietà associati alla risorsa remota che abbiamo appena reperito. La richiesta dispone di due eventi utili:

  1. data: La richiesta non è ancora completa ed i dati vengono ancora assemblati per costituire la risorsa finale. In questa fase il file JSON non è completo e se ne effettuassimo il parsing otterremmo degli errori.
  2. end: La richiesta è completa e la risorsa è disponibile. Qui possiamo effettuare il parsing.

A questo punto sorge un problema: come facciamo a collegare i due eventi? Possiamo assemblare una stringa con i dati della richiesta nel primo evento ed effettuare il parsing di tale stringa nel secondo:


var req = http.request(options, function(res) {
  var data = '';
  res.on('data', function (chunk) {
  	data += chunk;	// assemblo la stringa 
  });

  res.on('end', function(){
  	var obj = JSON.parse(data); // parsing dei dati come oggetto JSON
  	console.log(obj);
  });

});

req.end(); // fine della richiesta

Se digitiamo node json.js nella console otteniamo il seguente output:

nodejs-json

Torna su