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
+5.3k Golang : Intercept, inject and replay HTTP traffics from web server
+37.6k Golang : Comparing date or timestamp
+11.6k How to tell if a binary(executable) file or web application is built with Golang?
+9k Golang : io.Reader causing panic: runtime error: invalid memory address or nil pointer dereference
+10.9k Golang : Create Temporary File
+9.1k Golang : Generate Codabar
+23.1k Golang : Print out struct values in string format
+21k Golang : For loop continue,break and range
+7.3k Golang : Individual and total number of words counter example
+11k Golang : How to determine a prime number?
+11.5k CodeIgniter : Import Linkedin data
+7k Golang : Get Alexa ranking data example