【问题标题】:Get Express Route URL in NodeJS with parameters使用参数在 NodeJS 中获取 Express Route URL
【发布时间】:2019-01-20 01:09:11
【问题描述】:

我在 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 上的其他应用程序,因此引荐来源网址与好的 url 不匹配

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

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

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

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

感谢您的回答。

【问题讨论】:

    标签: javascript node.js express path routeparams


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2016-02-03
      • 2016-07-23
      • 2017-05-25
      • 2015-03-29
      • 1970-01-01
      相关资源
      最近更新 更多