2016-01-07 341 views
2

我已经设置了一个快速应用并使用路由中间件将一些路由抽象为单独的包含。在Express路由器路由中确定路径

我在app.js使用这种风格引用它们:

app.use('/foo', my_urls); 

这意味着在浏览器中“/富/酒吧”,如果是“/酒吧”进行处理。

但问题是,在包含的路由器文件的router.get("/bar"...)部分,我需要知道前面(foo)部分的值。我已经设置了这个“foo”可以是任何值的数组的任何路线。

有什么方法可以知道路由中间件的上下文,路由的前一部分路径在哪​​里作用?换句话说,我可以做一些像(在这里假装代码):

router.get('/bar', function(req, res, next) { 
    res.send(req.path[0]) // foo 
}); 

解决:谢谢你的答案。

router.get('/bar', function(req, res, next) { 
    res.send(req.baseUrl.splice(1)) // foo 
}); 
+0

express有'req.path'属性,所以你可以知道路径http://expressjs.com/en/api.html#req.path – Bek

+0

谢谢@Bek我正在寻找的部分是“baseUrl”作为“路径”只会显示第一个路径后面的部分路径。干杯。 –

回答

5

快递已经req.path属性,这样你就可以知道该路径,但显示父路由器的路径之后的路径(如果有的话),所以要得到母路由器路径可以使用req.baseUrl:我可以用这个获得的价值和req.originalUrl用queryparam获得完整的网址。

+0

完美:req.baseUrl正是我所需要的。谢谢! –