Использование Node.js для подключения к API REST

разумно ли использовать Node.js написать автономное приложение, которое будет подключать два REST API?

один конец будет POS-точкой продажи-system

другой будет размещенной платформой электронной коммерции

будет минимальный интерфейс для настройки сервиса. ничего больше.

3 ответов


Да, Узел.js идеально подходит для выполнения вызовов внешних API. Однако, как и все в Node, функции для выполнения этих вызовов основаны на событиях, что означает выполнение таких вещей, как буферизация данных ответа, а не получение одного завершенного ответа.

например:

// 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);
    }); 
}); 

возможно, имеет смысл найти простую библиотеку-оболочку (или написать свой), Если вы собираетесь делать много телефонных звонков.


конечно. Узел.JS API содержит методы для выполнения HTTP-запросов:

Я предполагаю, что приложение, которое вы пишете, является веб-приложением. Вы можете использовать рамки как Экспресс чтобы удалить некоторые из ворчания работы (см. Также этот вопрос на узел.веб-фреймворки на JS).


более простой и полезный инструмент просто использует API, такой как Unirest; URest-это пакет в NPM, который слишком прост в использовании, как

 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,
    });

});