我一直在开发一个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 的答案可行,但不允许根据名称构建 URL。
mux.Vars(req)["tab"]