通配符或正则expression式节点在中间件上表示装载path

我想定义不同的中间件,具体取决于path的外观。 在这里输入图像描述

事情是,path可能会警惕; 我想例如支持以下path:

/chat/auth/test /chat/auth/add /chrome/auth/test /chrome/add 

每次auth在path中,我都希望auth中间件被调用, 聊天chrome我希望他们各自的中间件被调用。

app.js:

 // Middleware authentication var chatAuthenticate = require('./server/middleware/chat-authenticate'); app.use('/chat', chatAuthenticate(addon)); var authAuthentication = require('./server/middleware/auth-authenticate'); app.use('/auth', authAuthentication()); 

我明白,我可以添加多个条目到app.js的每个可能的组合,如/ chat / auth和/ chrome / auth,它不会增加复杂性,但我只是好奇,如果有可能解决这与通配符或正则expression式:)

 app.use(/auth/, authAuthentication); 

这将为每个包含auth任何地方的请求调用authAuthentication。 有几件事要考虑:

  • 这是一个正则expression式,所以,而不是引号,你只需要/ … /作为分隔符
  • 请注意,如果您有多个与路由匹配的中间件(例如,另一个与/chat/为RegEx的中间件,并且您调用/auth/chat/chat/auth ,则将调用这两个中间件。因此,重要的是要考虑您的app.use()调用顺序。
  • 期望(request, response, next)参数需要authAuthentication。 如果直接调用该函数,则函数将返回一个函数,该函数将采用三个高速中间件参数。
  • 通常的做法是将所有require调用放在脚本的顶部
  • 确保您完全阅读并理解Express Routing 。 太棒了。