Golang : Multiplexer with net/http and map
This is additional tutorial on multiplexer, with just net/http
package and a map.
A multiplexer allows you to route to different function or handler based on the URL's path.
For example :
"/someresource/:id" ---> "code to do something with the resource"
"/users/:name/profile" ---> "code to do something with the profile"
This tutorial is similar to the previous tutorial on multiplexer with NewServeMux()
function, but it uses a map instead.
package main
import "net/http"
type home struct{}
func (h home) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
}
type page struct {
body string
}
func (p page) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// echo back the page first URI
w.Write([]byte(p.body))
}
// use map instead
type multiplexer map[string]http.Handler
func (m multiplexer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if handler, ok := m[r.RequestURI]; ok {
handler.ServeHTTP(w, r)
} else {
w.WriteHeader(http.StatusNotFound)
}
}
var mux = multiplexer{
"/": home{},
"/references/": page{"references"},
"/tutorials/": page{"tutorials"},
}
func main() {
http.ListenAndServe(":8080", mux)
}
See also : Golang : Gorilla mux routing 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
+3.3k PHP : Extract part of a string starting from the middle
+6.4k Golang : Metaprogramming example of wrapping a function
+9.7k Golang : Convert(cast) float to int
+29.2k Golang : How to split or chunking a file to smaller pieces?
+14k Golang : Parse date string and convert to dd-mm-yyyy format
+4.9k Golang : How to iterate a slice without using for loop?
+13.3k Golang : How to tell if a file is compressed either gzip or zip ?
+16.6k Golang : Convert string slice to struct and access with reflect example
+21k Golang : Create PDF file from HTML file
+8.1k Golang : Proper way to test CIDR membership of an IP 4 or 6 address example
+6.8k Golang : Accept any number of function arguments with three dots(...)
+12k Golang : Parsing or breaking down URL