如何使用gorilla mux创建具有可选url变量的路由?

如何使用gorilla mux创建具有可选url变量的路由?,go,mux,Go,Mux,我想在路由中有一个可选的URL变量。我似乎找不到使用mux包的方法。以下是我目前的路线: func main() { r := mux.NewRouter() r.HandleFunc("/view/{id:[0-9]+}", MakeHandler(ViewHandler)) http.Handle("/", r) http.ListenAndServe(":8080", nil) } 当url为localhost:8080/view/1时,它会工作。我希望它

我想在路由中有一个可选的URL变量。我似乎找不到使用mux包的方法。以下是我目前的路线:

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/view/{id:[0-9]+}", MakeHandler(ViewHandler))
    http.Handle("/", r)
    http.ListenAndServe(":8080", nil)
}

当url为
localhost:8080/view/1
时,它会工作。我希望它接受,即使没有
id
,这样,如果我输入
localhost:8080/view
,它仍然可以工作。想法?

您可以为根
/view
路径定义一个新的
HandleFunc

r.HandleFunc("/view", MakeHandler(RootHandler))

并让
RootHandler
函数执行该路径所需的任何操作。

用所需路径再次注册处理程序:

r.HandleFunc("/view", MakeHandler(ViewHandler))
只要确保在获取VAR时检查此案例:

vars := mux.Vars(r)
id, ok := vars["id"]
if !ok {
  // directory listing
  return
}
// specific view