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
+11.9k Linux : How to install driver for 600Mbps Dual Band Wifi USB Adapter
+12.1k Golang : Print UTF-8 fonts on image example
+10k Golang : Detect number of faces or vehicles in a photo
+19.6k Golang : Count JSON objects and convert to slice/array
+27.1k Golang : Convert CSV data to JSON format and save to file
+8.5k Golang : Combine slices but preserve order example
+6.3k Golang : Map within a map example
+8.2k Golang : How to check if input string is a word?
+5.1k Python : Convert(cast) string to bytes example
+22.7k Golang : Gorilla mux routing example
+8.5k Golang : Executing and evaluating nested loop in html template
+17.3k Golang : [json: cannot unmarshal object into Go value of type]