代码之家  ›  专栏  ›  技术社区  ›  Simon Trichereau

使用参数在NodeJS中获取快速路由URL

  •  1
  • Simon Trichereau  · 技术社区  · 6 年前

    我的应用程序在Express 4.x中有问题,我有一个身份验证中间件正在检查调用的路由,我想得到没有参数的路由。。。

    例子:

    我宣布这条路线: /authentication/newPassword/:token

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

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

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

    美国石油学会 它被其他URL上的其他应用程序调用,因此引用程序与好的URL不匹配

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

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

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

    谢谢你的回答。

    1 回复  |  直到 6 年前
        1
  •  0
  •   mihai    6 年前

    快速使用 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) { //...