2017-07-18 148 views
0

我的節點應用程序的路由文件夾中有兩個文件,例如fetchCity.js和addNewDevice.js。我想將請求參數從addNewDevice.js轉發到fetchCity.js並在addNewDevice.js文件中處理響應。我試過下面的代碼,但沒有工作。NodeJS中的請求轉發

var express = require('express'); 

    module.exports = function(app){ 
     var cors = require('cors'); 
     var coptions = { 
      "origin": "*", 
      "methods": "GET,HEAD,PUT,POST,OPTIONS", 
      "preflightContinue": false, 
      "allowedHeaders":['Content-Type'] 
     } 
     var db = require('./dbclient'); 
     var bodyParser = require('body-parser'); 
     app.use(cors(coptions)); 
     app.use(bodyParser.json()); 
     app.use(bodyParser.urlencoded({extended:true})); 
     app.post('/newBinDevice', function(req, res, next) { 

      var did = req.body.deviceid; 
      var sver = req.body.swver; 
      var city = req.body.city; 
      var circle = req.body.circle; 
      app.post('/fetchCityArea',function(req,res){ 
        console.log('Response from fetchCityArea is ' + JSON.stringify(res)); 
      }); 
     }); 
    } 

回答

0

通過在node.js代碼中使用http模塊並按照以下僞代碼發送請求來解決此問題。

var http = require('http'); 

app.post('/abc',function(req,res) { 
     http.get(url,function(resp){ 
       resp.on('data',function(buf){//process buf here which is nothing but small chunk of response data}); 
       resp.on('end',function(){//when receiving of data completes}); 
     });  
}); 
0

代替:

app.post('/fetchCityArea',function(req,res){ 
        console.log('Response from fetchCityArea is ' + JSON.stringify(res)); 
      }); 

使用:

res.redirect('/fetchCityArea'); 

原因:app.post( '/ someRoute')是一個HTTP監聽模塊不是一個http請求模塊。而res.redirect是響應對象的一個​​函數,它會將負載重定向到傳遞給它的路由。

+0

我認爲它會重定向用戶和響應將被髮送給用戶。用戶可以隨時向/ fetchCityArea發送請求。但是,當他們向/ addNewDevice發送請求時,我需要在/ addNewDevice中處理/ fetchCityArea的響應。如果我錯了,請糾正我。因爲在服務器代碼中使用重定向方法後,我沒有找到如何獲取響應對象。 –

+0

是的,你是對的。你是否也在app.post處理程序中處理請求? –

+0

是的,我想從/ addNewDevice發送請求到/ fetchCityArea,並且在收到響應後,我想在/ addNewDevice中進一步處理它。預期的行爲與Java中的RequestDispatcher.forward方法類似。 –