Routing with the gorilla/mux Package
A powerful HTTP router and URL matcher for building Go web servers
https://github.com/gorilla/mux
Install package
go get -u github.com/gorilla/mux
Build sample 1:
package main import ( "fmt" "github.com/gorilla/mux" "net/http" ) func main() { r := mux.NewRouter() r.HandleFunc("/foo", func(w http.ResponseWriter, req *http.Request) { fmt.Fprintln(w, "hi foo") }).Methods("GET") http.ListenAndServe(":8000", r) }
Run the test sample 1.
Build sample 2: It's helpful to match and pass in parameters within the request patch (for example, when implementing a RESTful API)
package main import ( "fmt" "github.com/gorilla/mux" "net/http" ) func main() { r := mux.NewRouter() r.HandleFunc("/users/{user}", func(w http.ResponseWriter, req *http.Request) { user := mux.Vars(req)["user"] fmt.Fprintf(w, "hi %s ", user) }).Methods("GET") http.ListenAndServe(":8000", r) }
Run and test sample 2.
Build sample 3: Use regular expression to qualify the patterns passed.
package main import ( "fmt" "github.com/gorilla/mux" "net/http" ) func main() { r := mux.NewRouter() r.HandleFunc("/users/{user:[a-z]+}", func(w http.ResponseWriter, req *http.Request) { user := mux.Vars(req)["user"] fmt.Fprintf(w, "hi %s ", user) }).Methods("GET") http.ListenAndServe(":8000", r) }
Run and test sample 3.