6

我想在路由中有一个可选的 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它仍然可以工作。想法?

4

2 回答 2

8

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

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

只需确保在获取 var 时检查这种情况:

vars := mux.Vars(r)
id, ok := vars["id"]
if !ok {
  // directory listing
  return
}
// specific view
于 2013-08-29T06:10:43.750 回答
5

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

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

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

于 2013-08-29T06:09:27.993 回答