在路线中获取 - Nodejs

时间:2016-05-26 07:50:46

标签: javascript node.js express

如果我想在路线中发出GET请求,最好的方法是什么?

api.js

api.route('/guests')
  .get(function(req, res) {
    Guest.find(function(err, guests) {
        if (err)
            res.send(err);

        res.json(guests);
    });
  });

routes.js

app.get('/export', requiresLogin, function(req, res) {

    /* make a GET request to my api (eg.: 'api/guests') */
    /* and save the 'guests' to a variable              */

});

1 个答案:

答案 0 :(得分:1)

第一个解决方案

您可以定义控制器guestCtrl.js,而不是调用内部apis,并从api.jsroutes.js

中的guestCtrl.js调用该函数

<强> guestCtrl.js

module.exports = {
   getGuests : function(){
      Guest.find(function(err, guests) {
         if (err)
            //handle error
            return [];
         else
            return guests;
       });
   }
}

<强> api.js

//path of guests.js
var guestCtrl = require('guestCtrl.js');

api.route('/guests').get(function(req, res) {
     return guestCtrl.getGuests();
});

<强> routes.js

var guestCtrl = require('guestCtrl.js');
app.get('/export', requiresLogin, function(req, res) {
    var guests = guestsCtrl.getGuests();
    // do whatever you like to do with guests
});

第二个解决方案

如果您真的想使用内部API,那么您可以使用request模块。

e.g。

<强> routes.js

var request = require('request');
app.get('/export', requiresLogin, function(req, res) {
   // you can put the hostname and port here 
   request('http://127.0.0.1:3000/api/guests', function(err, body, response){
       var guests = body; // and save the 'guests' to a variable        
   });

});