Golang : Gorilla mux routing example
This is a short tutorial on how to use Gorilla's mux. The code example below is taken from previous tutorial on web routing and with minor addition.
package main
import (
"fmt"
"github.com/gorilla/mux"
"net/http"
)
func SayHelloWorld(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
}
func Greet(w http.ResponseWriter, r *http.Request) {
name := mux.Vars(r)["name"]
w.Write([]byte(fmt.Sprintf("Hello %s !", name)))
}
func ProcessPathVariables(w http.ResponseWriter, r *http.Request) {
// break down the variables for easier assignment
vars := mux.Vars(r)
name := vars["name"]
job := vars["job"]
age := vars["age"]
w.Write([]byte(fmt.Sprintf("Name is %s ", name)))
w.Write([]byte(fmt.Sprintf("Job is %s ", job)))
w.Write([]byte(fmt.Sprintf("Age is %s ", age)))
}
func main() {
mx := mux.NewRouter()
mx.HandleFunc("/", SayHelloWorld)
mx.HandleFunc("/{name}", Greet)
//to handle URL like
//http://website:8080/person/Boo/CEO/199
//http://website:8080/person/Boo/CEO/199 <- if age > 199, will cause 404 error
mx.HandleFunc("/person/{name}/{job}/{age:[0-199]+}", ProcessPathVariables)
http.ListenAndServe(":8080", mx)
}
Tests output :
URL : http://162.243.5.230:8080/person/Boo/CEO/199
Name is Boo Job is CEO Age is 199
URL : http://162.243.5.230:8080/person
Hello person !
For more details and advanced methods, please refer to the official Gorilla mux documentation.
See also : Golang : Get URI segments by number and assign as variable example
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+17.5k Golang : Compare floating-point numbers
+3.8k Golang : Convert lines of string into list for delete and insert operation
+9.6k Use systeminfo to find out installed Windows Hotfix(s) or updates
+13.9k Golang : How to convert(cast) IP address to string?
+10.3k Golang : Perform sanity checks on filename example
+9.8k How to test Facebook App on localhost ?
+15.2k Golang : Get own process identifier
+3.5k Golang : Experimental Jawi programming language
+25.2k PHP : Count number of JSON items/objects
+3.4k Chrome : How to block socketloop.com links in Google SERP?