javascript - 匹配 Express 中除 '/' 之外的所有路由

标签 javascript regex node.js express

我正在尝试通过检查 cookie 为我的应用程序创建身份验证机制。所以我添加了 router.all('*') 来匹配每个请求,检查 cookie,然后转到实际的处理程序。但我需要它只匹配在“/”之后有一个或多个字符的请求。 (我想匹配/manage/m/about,但不是/)。

//Assuming a request for '/', this gets called first
router.all('*', function (request, response, next) {
    //Stuff happening
    next();
});

//This gets called on next(), which I do not want
router.get('/', function (request, response) {
    //Stuff happening
});

//However this I do want to be matched when requested and therefore called after router.all()
router.post('/about', function (request, response) {
    //Stuff happening
});

根据答案here您可以使用正则表达式进行路径匹配,但我真的不明白 '*' 是什么。它可能匹配所有内容,但对我来说它看起来不像正则表达式。

  1. 为什么 '*' 匹配 /
  2. 我需要向 all() 提供什么参数来匹配 /about 而不是 /

最佳答案

简单地说*最后的。路由器按定义顺序检查。

所以:

router.get('/' ...

然后

router.all('*' ...

请记住 /* 仍然有效, 所以 next()来自 / 的电话将触发捕获所有进程。

关于javascript - 匹配 Express 中除 '/' 之外的所有路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37373740/

相关文章:

javascript - 创建对象后如何在变量上使用 get 运算符?

javascript - 处理部分法语地址的高级正则表达式

node.js - Vows 测试的输出数据

密码的正则表达式 = 一个数字和大小写字母和特殊字符但是!!开头或结尾没有特殊字符

javascript - 为什么 Mozilla 认为条件捕获 block 是非标准的?

javascript - 树莓派上的 node.js 服务器

javascript - 如何在 Windows 上使用 PhantomJS/CasperJS 的子进程模块

javascript - 是否可以将 VAST 与动态创建的视频标签一起使用?

javascript - 将新行添加到 jqGrid 控件后如何运行 JavaScript 函数?

regex - 将javascript正则表达式转换为swift nsregularexpression