我一直在做一个使用 gorilla/mux 作为路由器的 Go 项目。
我需要能够拥有与路线关联的查询值,但这些值应该是可选的。这意味着我想在同一个处理程序中捕获 /articles/123
和 /articles/123?key=456
。
为此,我尝试使用 r.Queries
接受键/值对的方法:router.
Path("/articles/{id:[0-9]+}").Queries("key", "{[0-9]*?}")
但这只使值( 456
)可选,而不是 key
。所以 /articles/123?key=456
和 /articles/123?key=
都是有效的,但不是 /articles/123
。
编辑:另一个要求是,在注册路线后,我想以编程方式构建它们,但我似乎无法弄清楚如何使用 r.Queries
尽管文档明确指出这是可能的( https://github.com/gorilla/mux#registered-urls )。
@jmaloney 答案有效,但不允许从名称构建 URL。
原文由 stassinari 发布,翻译遵循 CC BY-SA 4.0 许可协议
我只想注册你的处理程序两次。
这是一个演示的工作程序。请注意,我正在使用
r.FormValue
来获取查询参数。注意:确保您拥有最新版本
go get -u github.com/gorilla/mux
因为最近修复了查询参数未添加构建 URL 的错误。