在Express中使用子路由器时获取完整的路由器模式?

时间:2016-01-13 16:58:02

标签: node.js express

假设我在以下Express应用程序中请求HTTP端点GET /foobar/baz,我如何 - 通过req对象 - 获取用于匹配整个URL的原始模式(即/foo(bar)?/:id):

var app = express()
var sub = express.Router()

sub.get('/:id', function (req, res, next) {
   // if `/foobar/baz` is requested:
   console.log(req.url)         // '/baz'
   console.log(req.baseUrl)     // '/foobar'
   console.log(req.originalUrl) // '/foobar/baz'
   console.log(req.route.path)  // '/:id'
})

app.use('/foo(bar)?', sub)

可以使用req.route.path访问子路由模式,这样可以/:id,但父路由模式/foo(bar)?似乎无法获取。

1 个答案:

答案 0 :(得分:2)

您可以使用mountpath属性

  

app.mountpath属性是子应用程序所在的路径模式   安装了。

var app = express()
var sub = express.Router()

sub.get('/:id', function (req, res, next) {
   // if `/foobar/baz` is requested:

    console.log( sub.mountpath ); // '/foo(bar)?'

    console.log(req.route.path)         // '/:id'

})

app.use('/foo(bar)?', sub);