您好我在go中使用gorilla / mux,我想处理以下开头的所有网址:“/ a / b / c”
我试过了:
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc(`/a/b/{_dummy:c(\/)?.*}`, Func1)
即url可以是/ a / b / c / d或/ a / b / c / d / e
答案 0 :(得分:3)
根据gorilla / mux的文档:http://www.gorillatoolkit.org/pkg/mux#Route.PathPrefix
func (r *Router) PathPrefix(tpl string) *Route
PathPrefix使用URL路径的匹配器注册新路由 字首。请参阅Route.PathPrefix()。
func (r *Route) PathPrefix(tpl string) *Route
PathPrefix为URL路径前缀添加匹配器。这匹配如果 给定模板是完整URL路径的前缀。请参阅Route.Path() 有关tpl论点的详细信息。
请注意,它不会特别处理斜杠(" / foobar /"将会 与前缀" / foo")匹配,因此您可能希望使用尾部斜杠 这里。
另请注意,Router.StrictSlash()的设置不起作用 具有PathPrefix匹配器的路由。
请注意,提供给PathPrefix()的路径代表一个"通配符": 调用PathPrefix(" / static /")。处理程序(...)表示处理程序 将传递符合" / static / *"。
的任何请求
所以你要找的是:
router := mux.NewRouter()
router.PathPrefix("/a/b/c/").HandleFunc(proxy.GrafanaHandler) // matches /a/b/c/*