2016-08-21 55 views
0

可以說我想在url中的「子文件夾」中有2個不同的實例。在應用程序的js我有這樣的定義:快遞 - 獲取路由器的路由器嗎?

var routes = require('./routes/index'); 

app.use('/myapp1', routes); 
app.use('/myapp2', routes); 

內部路由是相同的。

但還是在我想「得到」在app.use定義的路徑路由器 - 例如:myapp1,myapp2

我如何得到這個路由器?

從路由/ index.js:

router.use(/\/.*/, function (req, res, next) { 
    // want to see "myapp1/myapp2" without the *sub* path defined in this particular router eg.: /products /user etc. 
    next(); 
}); 
+0

有什麼問題找了'req'對象中得到的路徑? – HeadCode

回答

1

您可能需要使用req.baseUrl屬性。

例子:

routes.get('/1', function(req, res) { 
    res.send([ 
    req.baseUrl, 
    req.path, 
    req.baseUrl + req.path, 
    ].join('\n')); 
}); 

app.use('/api', routes); 

發送HTTP請求/api/1將打印:

/api 
/1 
/api/1 
0
var express = require('express'); 
var app = express(); 
var router = express.Router(); 

app.use(function(req, res, next) { 
    req.appInstance = (req.url.indexOf('/app2/') == 0) ? 2 : 1; 
    next(); 
}); 

app.get('/', function(req, res, next) { 
    res.redirect('/app1/user'); 
}); 

router.get('/user', function(req, res, next) { 
    res.send(req.url +' on app' + req.appInstance); 
}); 

app.use('/app1', router); 
app.use('/app2', router); 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
});