2016-05-26 7 views
1

ルートでGETリクエストを作成するにはどうすればよいですか?GET in a Route - Nodejs

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    */ 

}); 
+0

あなたは 'api.js'と' routes.js' –

+0

の両方で呼び出すことができる新しい 'function'を定義することができます別のサーバーですか? – Nivesh

+0

いいえ、同じサーバー/アプリにあります – larz

答えて

1

最初のソリューション

代わりに、内部APIを呼び出すのでは、コントローラ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(); 
}); 
api.jsroutes.js

guestCtrl.jsでguestCtrl.jsから関数を呼び出すことができます

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モジュールを使用することができます。

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

});