确定Express路由器路由中的路径

Don*_*n H 4 path node.js express

我已经设置了一个快速应用程序,并使用路由中间件将一些路由抽象为单独的包含.

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

app.use('/foo', my_urls);
Run Code Online (Sandbox Code Playgroud)

这意味着浏览器中的"/ foo/bar"就像处理"/ bar"一样处理.

但问题是在router.get("/bar"...)包含的路由器文件的部分中,我需要知道前面的(foo)部分的值.我已经建立了这个"foo"可能来自一系列值的路径.

有没有办法知道路由中间件的上下文,路由的前面部分是什么?换句话说,我可以做一些事情(在这里假装代码):

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

解决了:谢谢你的回答.我可以使用这个获得价值:

router.get('/bar', function(req, res, next) {
  res.send(req.baseUrl.splice(1)) // foo
});
Run Code Online (Sandbox Code Playgroud)

Bek*_*Bek 7

express具有req.path属性,因此您可以知道路径,但是在父路由器路径之后显示路径(如果有的话),因此要获得父路由器路径,您可以使用req.baseUrlreq.originalUrl来获取带有queryparam的完整URL.