有谁知道是否有可能获得用于触发路线的路径?
例如,假设我有这个:
app.get('/user/:id', function(req, res) {});
使用以下简单的中间件
function(req, res, next) { req.? });
我希望能够/user/:id使用中间件,但不是req.url。
/user/:id
req.url
你想要的是req.route.path。
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对象的中间件,它可能处于比您正在开发的中间件更低的级别。
req.route
这样,req.route只有在您插入路由器中间件以req由Express自身执行之前为您解析中间件的情况下,获取才有可能。
req