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
+10.8k Golang : How to transmit update file to client by HTTP request example
+9.7k Golang : Resumable upload to Google Drive(RESTful) example
+17.4k Golang : delete and modify XML file content
+16.9k Golang : Get number of CPU cores
+13.8k Golang : convert rune to unicode hexadecimal value and back to rune character
+25.6k Golang : How to write CSV data to file
+8.5k Python : Fix SyntaxError: Non-ASCII character in file, but no encoding declared
+6.7k Default cipher that OpenSSL used to encrypt a PEM file
+42.9k Golang : Convert []byte to image
+15.4k Golang : rune literal not terminated error
+7.1k Golang : Check if one string(rune) is permutation of another string(rune)
+13.4k Golang : Strings comparison