1

我在 Express 4.x 中制作的应用程序有问题,我有一个身份验证中间件检查调用的路由,我想获得不带参数的路由......

例子 :

我宣布了这条路线:/authentication/newPassword/:token 所以我想知道 request.path 是否与这条特定路线相匹配......

这是我的网址:/authenticate/newPassword/XRlIjoiMjAxOC0wOC0xM1QwOTNzo1Mi43ODBaIn0=

所以我在寻找不同的变量:

req.path         // /authenticate/newPassword/XRlIjoiMjAxOC0wOC0xM1QwOTNzo1Mi43ODBaIn0=
req.originalUrl  // /authenticate/newPassword/XRlIjoiMjAxOC0wOC0xM1QwOTNzo1Mi43ODBaIn0=
req.url          // /authenticate/newPassword/XRlIjoiMjAxOC0wOC0xM1QwOTNzo1Mi43ODBaIn0=
req.pathname     // undefined

我在看谷歌,我看到有人在回答 req.headers 的使用,.refers 知道路径,但我的快速应用程序是一个API,它被其他 URL 上的其他应用程序调用,所以引用者不匹配好的网址

我使用这样的正则表达式找到了解决问题的方法:

const pathOk = /\/authenticate\/newPassword\/.+/;
if(pathOk.test(req.path)) { //Continue the middleware ...

所以我的问题很简单,Express 或 Node 中是否有类似的东西:

if (req.{something like path} == '/authentication/newPassword/:token') {

感谢您的回答。

4

1 回答 1

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) { //... 
于 2018-11-03T00:01:08.727 回答