构建消耗其他外部服务的节点REST服务

时间:2015-09-12 13:29:13

标签: node.js web-services api

是否可以构建引用其他外部服务的Node REST API?此API的唯一目的是将其他Web服务整合到单个服务中。 Node是否是选择完成此任务的正确技术?

2 个答案:

答案 0 :(得分:0)

是的。因为nodejs是非阻塞和事件驱动的运行时。这正是你所需要的。

答案 1 :(得分:0)

有时你回答自己的问题。首先,我很抱歉,当它是Node.js API时,最初称之为AngularJS API。

您可以使用http接口与其他服务进行交互。我构建了一个原型,它调用由typicode提供的测试服务,它只是将响应作为我服务的响应返回。

这是使用节点模块express和body-parser构建的。

// server.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var http = require('http');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

var port = process.env.PORT || 8080;

// routes
var router = express.Router();

// test route
router.get('/', function(req, res) {
    res.json({ message: 'Welcome to your API' });   
});

// typicode test route
router.route('/typicode')
  .get(function(req, res) {
    var options = {
      host: 'jsonplaceholder.typicode.com',
      path: '/posts/1'
    };
    var typicodeReq = http.get(options, function(http_res) {
      var str = '';
      http_res.on('data', function(chunk) {
        str += chunk;
      });
      http_res.on('end', function() {
        res.json(JSON.parse(str));  
      });
    });
  });

// route registration prefixed with /api
app.use('/api', router);

// server start
app.listen(port);
console.log('API Listening on Port ' + port);