Go 是否可以使net.http.ServeMux与整个子树匹配?

Go 是否可以使net.http.ServeMux与整个子树匹配?,go,Go,我想创建一个ServeMux来匹配整个子树 例如: 有一个处理程序能够处理所有与用户相关的函数。 列出所有可能与用户相关的URL是不好的,比如 mux := http.NewServeMux() mux.Handle("/user/", TestHandler) mux.Handle("/user/function01", TestHandler) mux.Handle("/user/function02", TestHandler) mux.Handle("/user/function03

我想创建一个ServeMux来匹配整个子树

例如:

有一个处理程序能够处理所有与用户相关的函数。 列出所有可能与用户相关的URL是不好的,比如

mux := http.NewServeMux()  
mux.Handle("/user/", TestHandler)
mux.Handle("/user/function01", TestHandler)
mux.Handle("/user/function02", TestHandler)
mux.Handle("/user/function03/sub-function01", TestHandler)
...
...
mux.Handle("/user/function100/sub-function01", TestHandler)
mux.Handle("/user/function100/sub-function01/sub-sub-function01", TestHandler)

是否可以在一行中匹配以“/user”开头的所有URL?

如果路径不存在,它将自动调用
/user/
处理程序,用于:

产生:

➜ curl localhost:9020/user/
generic user handler: /user/
➜ curl localhost:9020/user/f1/
f1 generic handler, /user/f1/
➜ curl localhost:9020/user/f1/sf1
sf1 generic handler, /user/f1/sf1
➜ curl localhost:9020/user/f2
generic user handler: /user/f2
➜ curl localhost:9020/user/f1/sf2
f1 generic handler, /user/f1/sf2

如果路径不存在,它将自动调用
/user/
处理程序,用于:

产生:

➜ curl localhost:9020/user/
generic user handler: /user/
➜ curl localhost:9020/user/f1/
f1 generic handler, /user/f1/
➜ curl localhost:9020/user/f1/sf1
sf1 generic handler, /user/f1/sf1
➜ curl localhost:9020/user/f2
generic user handler: /user/f2
➜ curl localhost:9020/user/f1/sf2
f1 generic handler, /user/f1/sf2

非常感谢。它工作正常,但只有一个例外。如果我尝试访问localhost:9020/user(无尾随斜杠),则会得到一个“永久移动”页面。是否也可以涵盖此情况?在这种情况下,Its会自动将您重定向到
/user/
,但是我想您可以为
/user
添加一个额外的
mux.HandleFunc(“/user”,…)
。谢谢!它工作正常,但只有一个例外。如果我尝试访问localhost:9020/user(无尾随斜杠),则会得到一个“永久移动”页面。是否也可以涵盖此情况?在这种情况下,Its会自动将您重定向到
/user/
,但是我想您可以为
/user
添加一个额外的
mux.HandleFunc(“/user”,…)