我一直在使用gorilla/mux作为路由器的Go项目。Gorilla mux可选查询值
我需要能够具有与路线相关联的查询值,但这些值应该是可选的。 这意味着我想在同一处理程序中捕获/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答案的作品,但不允许从名称建立网址。
一种方法:https://stackoverflow.com/questions/43379942/how-to-have-an-optional-query-in-get-request-using-gorilla-mux – smarx
@smarx我见过这个问题,但有两个原因为什么它不适用于我: 1.它阻止我在我的处理程序中使用'mux.Vars(req)[“tab”]' 2.它不允许我按名称构建注册的URL(我已更新了该问题) – stassinari