Golang 中的多路复用器类似于硬件中的多路复用器,它将一些输入乘以一些输出
我给你一个简单的例子
type CustomMultiplexer struct {
}
给定的多路复用器必须实现将ServeHTTP
int http 注册到服务器输入的方法
func (mux CustomMultiplexer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
SimpleRequestHandler(w, r)
return
}
http.NotFound(w, r)
return
}
我SimpleRequestHandler
的方法如下
func SimpleRequestHandler(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
mySimpleGetRequestHandler(w, r)
break
default:
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
break
}
}
现在我可以使用 myCustomMultiplxere
在传入请求之间进行多路复用
func main() {
customServer := CustomServer{}
err := http.ListenAndServe(":9001", &customServer)
if err != nil {
panic(err)
}
}
该http.HandleFunc
方法作为我给定的简单多路复用器工作。