2013-04-22 5 views
8

È ragionevole utilizzare Node.js per scrivere un'app stand alone che connetterà due API REST?Utilizzo di Node.js per connettersi a un'API REST

Un finale sarà un POS - Punti vendita - Sistema

L'altra sarà una piattaforma di eCommerce ospitata

Ci sarà un'interfaccia minimale per la configurazione del servizio. niente di più.

+0

Sì, è ok. Non vedo perché non è possibile utilizzare node.js per questo scopo. –

risposta

23

Sì, Node.js è perfettamente adatto per effettuare chiamate a API esterne. Proprio come tutto in Nodo, tuttavia, le funzioni per effettuare queste chiamate sono basate su eventi, il che significa fare cose come il buffering dei dati di risposta anziché ricevere una singola risposta completata.

Ad esempio:

// get walking directions from central park to the empire state building 
var http = require("http"); 
    url = "http://maps.googleapis.com/maps/api/directions/json?origin=Central Park&destination=Empire State Building&sensor=false&mode=walking"; 

// get is a simple wrapper for request() 
// which sets the http method to GET 
var request = http.get(url, function (response) { 
    // data is streamed in chunks from the server 
    // so we have to handle the "data" event  
    var buffer = "", 
     data, 
     route; 

    response.on("data", function (chunk) { 
     buffer += chunk; 
    }); 

    response.on("end", function (err) { 
     // finished transferring data 
     // dump the raw data 
     console.log(buffer); 
     console.log("\n"); 
     data = JSON.parse(buffer); 
     route = data.routes[0]; 

     // extract the distance and time 
     console.log("Walking Distance: " + route.legs[0].distance.text); 
     console.log("Time: " + route.legs[0].duration.text); 
    }); 
}); 

Può avere senso per trovare una semplice libreria wrapper (o lascia la tua), se avete intenzione di essere facendo un sacco di queste chiamate.

+0

Ben spiegato +1 – AndrewMcLagan

+0

Mi piace molto il modello con nodo evented. quando i dati sono suddivisi in questo modo. è possibile iniziare a manipolarlo prima che lo stream sia finito? arriva in ordine? – AndrewMcLagan

+0

Grazie! Sì, i dati vengono trasmessi in streaming in ordine. Se sei in grado di utilizzare i dati prima che lo streaming sia completo, non vedo perché non potresti lavorare con esso prima di allora (sebbene io personalmente non abbia ancora avuto un caso d'uso). –

-1

Uno strumento più semplice e utile è semplicemente utilizzando un'API come Unirest; URest è un pacchetto in NPM che è semplicemente troppo facile da usare come

app.get('/any-route', function(req, res){ 
    unirest.get("https://rest.url.to.consume/param1/paramN") 
     .header("Any-Key", "XXXXXXXXXXXXXXXXXX") 
     .header("Accept", "text/plain") 
     .end(function (result) { 
     res.render('name-of-the-page-according-to-your-engine', { 
     layout: 'some-layout-if-you-want', 
     markup: result.body.any-property, 
    }); 

});

+0

"res" non è definito! – Kasra

+0

Yo deve inserirli in un percorso in 'app.get ('/', auth.protected, function (req, res) { \t });' –

+0

Modificare e aggiornare il codice per favore. – Kasra

Problemi correlati