【发布时间】:2018-01-04 19:44:54
【问题描述】:
我一直在做一个使用 gorilla/mux 作为路由器的 Go 项目。
我需要能够将查询值与路由关联,但这些值应该是可选的。
这意味着我想在同一个处理程序中同时捕获 /articles/123 和 /articles/123?key=456。
为了完成,我尝试使用接受键/值对的r.Queries 方法:
路由器。
Path("/articles/{id:[0-9]+}").Queries("key", "{[0-9]*?}")
但这使得只有值 (456) 是可选的,而不是 key。
所以/articles/123?key=456 和/articles/123?key= 都有效,但/articles/123 无效。
编辑:另一个要求是,在注册路线之后,我想以编程方式构建它们,我似乎无法弄清楚如何使用r.Queries,即使文档明确指出这是可能的(@ 987654321@).
@jmaloney 回答有效,但不允许从名称构建 URL。
【问题讨论】:
-
@smarx 我已经看到了这个问题,但它对我不起作用有两个原因:1. 它阻止我在处理程序 2 中使用
mux.Vars(req)["tab"]。它没有允许我按名称构建注册 URL(我已经更新了问题)