通配符或正则表达式节点表示中间件上的挂载路径

前端之家收集整理的这篇文章主要介绍了通配符或正则表达式节点表示中间件上的挂载路径前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想根据路径的外观定义不同的中间件.

enter image description here

事情是道路可能会谨慎;我想支持以下路径:

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

每次auth在路径中我都希望调用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,它根本不会增加复杂性,但我只是好奇它是否可以解决这与通配符或正则表达式:)

解决方法

app.use(/auth/,authAuthentication);

这将为包含auth的每个请求调用authAuthentication.需要考虑的一些事项:

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

猜你在找的正则表达式相关文章