使用参数获取NodeJS中的Express Route URL

时间:2018-08-13 10:18:05

标签: javascript node.js express path routeparams

我在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') {

感谢您的回答。

1 个答案:

答案 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) { //...