如何使用gorilla mux创建带有可选url var的路由?

时间:2013-08-29 05:49:53

标签: go mux

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

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

当网址为localhost:8080/view/1时,它会起作用。即使没有id,我也希望它接受,这样如果我输入localhost:8080/view,它仍然有用。想法?

2 个答案:

答案 0 :(得分:7)

第二次使用您想要的路径注册处理程序:

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

请确保在获得您检查此案例的变量时:

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

答案 1 :(得分:4)

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

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

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