比第一个版本更加底层。通过ServeMux来控制路由的访问,ServeMux本质上只是一个路由管理器,而它本身也实现了Handler接口的ServeHTTP方法
server2.go
package main
import (
"io"
"net/http"
"log"
)
func main () {
mux := http.NewServeMux()
mux.Handle("/", &myHandler{})
mux.HandleFunc("/hello", sayTwo)
err := http.ListenAndServe(":6066", mux)
if err != nil {
log.Fatal(err)
}
}
// 自己实现一个handler,注册到mux中,然后再实现一个路由的注册
type myHandlerstruct {}
// 只需实现一个方法
func (*myHandler) ServeHTTP (w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "URL: " + r.URL.String())
}
func sayTwo (w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "this is version 2")
}
go run server2.go
网友评论