×

初窥http服务器-GOLANG

96
与子笑
2018.05.20 10:34 字数 275

golang  @amazeUI  2017-12-27 10:49:20

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()))

}

PHP01.COM
Web note ad 1