gomux

How to create a route with optional url var using gorilla mux?


I want to have an optional URL variable in route. I can't seem to find a way using mux package. Here's my current route:

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

It works when the url is localhost:8080/view/1. I want it to accept even if there's no id so that if I enter localhost:8080/view it'll still work. Thoughts?


Solution

  • You could define a new HandleFunc for the root /view path:

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

    And have the RootHandler function do whatever you require for that path.