go语言网络编程之HTTP服务器初探

匿名 (未验证) 提交于 2019-12-03 00:16:01

v1

 1 package main  2   3 import (  4     "log"  5     "net/http"  6 )  7   8 func main() { //根路由  9     http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 10         w.Write([]byte("Hello, this is version 1.")) //字符串转换成字节 11     }) 12     http.HandleFunc("/bye", sayBye) 13  14     log.Println("Starting server... v1") //打印一段日志 15     log.Fatal(http.ListenAndServe(":400", nil)) //一般不会被执行 16 } 17  18 func sayBye(w http.ResponseWriter, r *http.Request) { 19     w.Write([]byte("Bye bye this is version 1.")) 20 }

结果

V2

package main  import (     "log"     "net/http" )  func main() {     mux := http.NewServeMux()     mux.Handle("/", &myHandler{})     mux.HandleFunc("/bye", sayBye)      log.Println("Starting server... v2")     log.Fatal(http.ListenAndServe(":40", mux)) }  func sayBye(w http.ResponseWriter, r *http.Request) {     w.Write([]byte("Bye bye this is version 2!")) }  type myHandler struct{}  func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {     w.Write([]byte("Hello v2, the request URL is: " + r.URL.String())) }

结果

package main  import (     "log"     "net/http"     "os"     "os/signal"     "time" )  func main() {     server := &http.Server{         Addr:         ":40000",         WriteTimeout: time.Second * 2,     }     quit := make(chan os.Signal)     signal.Notify(quit, os.Interrupt)      mux := http.NewServeMux()     mux.Handle("/", &myHandler{})     mux.HandleFunc("/bye", sayBye)      go func() {         <-quit          if err := server.Close(); err != nil {             log.Fatal("Close server:", err)         }     }()      server.Handler = mux     log.Print("Starting server... v3")     err := server.ListenAndServe()     if err != nil {         if err == http.ErrServerClosed {             log.Print("Server closed under request.")         } else {             log.Fatal("Server closed unexpected")         }     } }  func sayBye(w http.ResponseWriter, r *http.Request) {     time.Sleep(3 * time.Second)     w.Write([]byte("Bye bye this is version 3.")) }  type myHandler struct{}  func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {     w.Write([]byte("Hello v3, the request URL is:" + r.URL.String())) }

结果

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!