Использование 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,
});
});