node.js - 在中间件中获取路由定义

标签 node.js express

有谁知道是否可以获取用于触发路由的路径?

例如,假设我有这个:

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/

相关文章:

javascript - 使用 Express 和 Node 将 json 文件发送到 pug 模板

node.js - express 3.0 如何使用 app.locals.use 和 res.locals.use

angularjs - 登录后让用户返回上一页( Node )

javascript - 在 Alexa Skill 中输入多个单词

javascript - Gulp webpack-dev-server : callback before bundle is finished

javascript - For循环覆盖对象

node.js - Mongoose:每天创建多少用户

javascript - 表达req.body为空。这是最好的方法吗?

javascript - 尝试使用不同的解析器时,cb 不是函数

node.js - 运行简单 nodejs 脚本的无效 ELF header