黄宽的blog

宁可十年不将军,不可一日不拱卒



初窥http服务器

func main() {
    http.HandleFunc("/", Hello)             //没有指定路由则匹配到根路由
    http.HandleFunc("/bye", Saybye)         //不能带括号
    mymux := http.NewServeMux()             //创建一个handlefunc的底层结构
    mymux.Handle("/myhandle", &myHandler{}) //有handle和handlefunc,http.handlefunc底层就是servermux.handlefunc
    //传入一个handle
    log.Println("服务开始运行")
    //创建自己的服务,listenandserve的底层也是多封装了一层
    myserve := &http.Server{
        Addr: ":4000",
    }
    myserve.Handler = mymux
    //    log.Fatal(myserve.ListenAndServe())
    log.Fatal(http.ListenAndServe(":4001", nil))
    //第二个参数也是handle,如果不传则myhandle路由不生效,传了则根路由和bye路由不生效
    //将根路由和bye路由绑定的http换成mymux则全部生效
}

type myHandler struct{}

func (*myHandler) ServeHTTP(w http.ResponseWriter, s *http.Request) { //为Myhandle绑定一个方法
    w.Write([]byte("这是调用底层创建http服务的第二种方法 url:" + s.URL.String()))
}

func Hello(w http.ResponseWriter, s *http.Request) {
    w.Write([]byte("你好,golang,第一种路由写法 Hello url:" + s.URL.String()))
}

func Saybye(w http.ResponseWriter, s *http.Request) {
    w.Write([]byte("第一种路由写法 Saybye url:" + s.URL.String()))
}


  golang

作者  :  黄宽

不耻最后,即使慢,驰而不息,纵会落后,纵令失败



About ME

about me

黄宽

我不想成为一个庸俗的人。十年百年后,当我们死去,质疑我们的人同样死去,后人看到的是裹足不前、原地打转的你,还是一直奔跑、走到远方的我?

友情链接