我已经建立了一个快速应用程序,并使用路由中间件将某些路由抽象到一个单独的include中。
我在app.js中使用这种样式引用了它们:
app.use('/foo', my_urls);
这意味着浏览器中的“/foo/bar”被当作“/bar”来处理。
但是,问题在于,在随附的路由器文件的
router.get("/bar"...)
部分中,我需要知道前面(foo)部分的值。我已经设置了此“foo”可以是值数组中的任何内容的路由。有什么方法可以了解路由中间件的上下文,即路由所作用的路径的前一部分吗?换句话说,我可以做类似的事情吗(在这里假装代码):
router.get('/bar', function(req, res, next) {
res.send(req.path[0]) // foo
});
解决:感谢您的回答。我可以使用以下方法获得值(value):
router.get('/bar', function(req, res, next) {
res.send(req.baseUrl.splice(1)) // foo
});
最佳答案
express具有req.path属性,因此您可以知道路径,但会在父路由器的路径之后显示路径(如果有的话),因此要获取父路由器路径,可以使用req.baseUrl和req.originalUrl来获取带有queryparam的完整URL。