有谁知道是否可以获取用于触发路由的路径?
例如,假设我有这个:
app.get('/user/:id', function(req, res) {});
使用以下简单的中间件
function(req, res, next) {
req.?
});
我希望能够在中间件中获取 /user/:id
,这不是 req.url
。
最佳答案
你想要的是req.route.path
。
例如:
app.get('/user/:id?', function(req, res){
console.log(req.route);
});
// outputs something like
{ path: '/user/:id?',
method: 'get',
callbacks: [ [Function] ],
keys: [ { name: 'id', optional: true } ],
regexp: /^\/user(?:\/([^\/]+?))?\/?$/i,
params: [ id: '12' ] }
http://expressjs.com/api.html#req.route
编辑:
正如评论中所解释的,在中间件中获取 req.route
是困难的/hacky。路由器中间件是填充 req.route
对象的中间件,它可能比您正在开发的中间件级别更低。
这样,只有在 Express 本身执行之前,您连接到路由器中间件为您解析 req
,才能获取 req.route
。
关于node.js - 在中间件中获取路由定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19460481/