我已经建立了一个快速应用程序,并使用路由中间件将某些路由抽象到一个单独的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.baseUrlreq.originalUrl来获取带有queryparam的完整URL。

09-20 23:26