深入理解Go标准库-ServeMux的使用与模式匹配

2023-12-13 10:05:02 浏览数 (2)

‍‍根据 Golang 文档 中的介绍,ServeMux是一个 HTTP 请求多路复用器(HTTP Request multiplexer)。它按照一定规则匹配请求URL和已注册的模式,并执行其中最匹配的模式的Handler

基本使用

http.ServeMux实现了Handler接口

代码语言:javascript复制
type Handler interface {
 ServeHTTP(ResponseWriter, *Request)
}

http.ServeMux提供两个函数用于注册不同Path的处理函数

  • ServeMux.Handle 接收的是Handler接口实现
  • ServeMux.HandleFunc 接收的是匿名函数
代码语言:javascript复制
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)
}

0 人点赞