我在Express 4.x中制作的应用程序存在问题,我在身份验证中间件中检查了所调用的路由,并且希望获得不带参数的路由...
示例:
我宣布了这条路线:/authentication/newPassword/:token
所以我想知道request.path是否匹配这个特定的路由...
这是我的网址:/authenticate/newPassword/XRlIjoiMjAxOC0wOC0xM1QwOTNzo1Mi43ODBaIn0=
所以我一直在寻找differents变量:
req.path // /authenticate/newPassword/XRlIjoiMjAxOC0wOC0xM1QwOTNzo1Mi43ODBaIn0=
req.originalUrl // /authenticate/newPassword/XRlIjoiMjAxOC0wOC0xM1QwOTNzo1Mi43ODBaIn0=
req.url // /authenticate/newPassword/XRlIjoiMjAxOC0wOC0xM1QwOTNzo1Mi43ODBaIn0=
req.pathname // undefined
我在Google上搜索时,看到有人回答了req.header的使用,。表示知道路径,但我的意思是 API ,它的调用者是其他网址上的其他应用程序,因此引荐来源网址与正确的网址不匹配
我使用正则表达式找到了解决问题的方法,如下所示:
const pathOk = /\/authenticate\/newPassword\/.+/;
if(pathOk.test(req.path)) { //Continue the middleware ...
所以我的问题很简单,Express或Node中是否有类似的东西:
if (req.{something like path} == '/authentication/newPassword/:token') {
感谢您的回答。
答案 0 :(得分:0)
Express使用path-to-regexp来匹配路由路径。
使用此模块,您可以根据路由字符串自动创建正则表达式。
var pathToRegexp = require('path-to-regexp')
var re = pathToRegexp('/authentication/newPassword/:token')
if(re.test(req.path)) { //...
或在一个班轮中:
if (require('path-to-regexp')('/authentication/newPassword/:token').test(req.path) { //...