根据 Golang 文档 中的介绍,ServeMux
是一个 HTTP 请求多路复用器(HTTP Request multiplexer
)。它按照一定规则匹配请求URL和已注册的模式,并执行其中最匹配的模式的Handler
基本使用
http.ServeMux
实现了Handler
接口
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
http.ServeMux
提供两个函数用于注册不同Path的处理函数
ServeMux.Handle
接收的是Handler
接口实现ServeMux.HandleFunc
接收的是匿名函数
type PathBar struct {
}
func (m PathBar) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Receive path bar"))
return
}
func main() {
mx := http.NewServeMux()
mx.Handle("/bar/", PathBar{})
mx.HandleFunc("/foo", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Receive path foo"))
})
http.ListenAndServe(":8009", mx)
}