【问题标题】:Express router how to route all requests with query parameters?Express 路由器如何使用查询参数路由所有请求?
【发布时间】:2015-06-17 18:50:55
【问题描述】:

我正在使用路由器模块将所有请求路由到特定的授权端点。

var router = Router();
app.use(router);
router.route('/*')
        .all([auth, function(req, res){
               res.send("Authorized").end();
        }])

如果我的请求 URL 看起来像 /myapp/cat,则此方法有效。但如果是 /myapp/cat?eyecolor=brown 则不起作用。

我需要使用任何特定的正则表达式格式来让路由器识别吗?性格之类的?

【问题讨论】:

  • 应该可以。问题可能出在您的 auth 中间件中,请发布其代码
  • 根据文档,您的代码应该可以工作,我认为您没有在“auth”中处理查询参数。

标签: node.js express


【解决方案1】:

这可能会对你有所帮助。

“有一个特殊的路由方法,app.all(),它不是从任何HTTP方法派生的。它用于在所有请求方法的路径上加载中间件。” 所以我不太确定router.route()。 http://expressjs.com/guide/routing.html

第二:查看上一页基于正则表达式的路由路径示例。 /.*fly$/ 接受蝴蝶、蜻蜓,但不接受飞鸟。我认为您的错误可能是您的小正则表达式。

【讨论】:

  • 对中间件使用.use(),而不是.all()。 '/*' 不是正则表达式。它将通过 path-to-regexp (npmjs.com/package/path-to-regexp) 转换为正则表达式。
  • app.use vs app.all。基本上,app.all(*) 循环遍历所有 HTTP 方法,而 app.use() 附加到应用程序的主中间件堆栈
猜你喜欢
  • 2020-11-22
  • 2022-12-05
  • 2017-12-15
  • 2013-01-15
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多