一尘不染

在中间件中获取路由定义

node.js

有谁知道是否有可能获得用于触发路线的路径?

例如,假设我有这个:

app.get('/user/:id', function(req, res) {});

使用以下简单的中间件

function(req, res, next) {
     req.?
});

我希望能够/user/:id使用中间件,但不是req.url


阅读 259

收藏
2020-07-07

共1个答案

一尘不染

你想要的是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由Express自身执行之前为您解析中间件的情况下,获取才有可能。

2020-07-07