hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 后端开发 - 正文 看Cosplay古风插画小姐姐,合集图集打包下载:炫龙网 · 炫龙图库

golang http怎样运用_后端开发

2019-12-04后端开发ki4网17°c
A+ A-

都说go规范库有用,Api设想简约。此次就用go 规范库中的net/http包完成一个简约的http web服务器,包含三种版本。

最简朴版 (引荐进修:go)

直接运用

http.HandleFunc(partern,function(http.ResponseWriter,*http.Request){})

HandleFunc接收两个参数,第一个为路由地点,第二个为处置惩罚要领。

//v1
func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
         w.Write([]byte("httpserver v1"))
       })
       http.HandleFunc("/bye", sayBye)
       log.Println("Starting v1 server ...")
       log.Fatal(http.ListenAndServe(":1210", nil))
 }

func sayBye(w http.ResponseWriter, r *http.Request) {
      w.Write([]byte("bye bye ,this is v1 httpServer"))
}

自定义Handler

检察规范库源码,v1版本实际上是调用了handle要领,传入的HandlerFunc完成了Handler的ServeHTTP要领,实际上是ServeHTTP在做http要求处置惩罚。

由此我们能够自定义本身的Handler,代码以下:

// v2
func main() {
   mux := http.NewServeMux()
   mux.Handle("/", &myHandler{})
   mux.HandleFunc("/bye", sayBye)

   log.Println("Starting v2 httpserver")
   log.Fatal(http.ListenAndServe(":1210", mux))
}
type myHandler struct{}

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
      w.Write([]byte("this is version 2"))
}
func sayBye(w http.ResponseWriter, r *http.Request) {
     w.Write([]byte("bye bye ,this is v2 httpServer"))
}

自定义server设置

前面临Handler开了一次刀,下面我们看看http.ListenAndServe()中有些什么隐秘。

本来这里能够自定义http服务器设置,都在Server这个构造体中,这个对象能设置监听地点端口,设置读写超时时候,设置handler,设置要求头最大字节数...,一切轻微革新一下上一个的顺序获得如今的顺序:

// v3
func main() {
    mux := http.NewServeMux()
    mux.Handle("/", &myHandler{})
    mux.HandleFunc("/bye", sayBye)

    server := &http.Server{
        Addr:         ":1210",
        WriteTimeout: time.Second * 3,            //设置3秒的写超时
        Handler:      mux,
    }
    log.Println("Starting v3 httpserver")
    log.Fatal(server.ListenAndServe())
}

type myHandler struct{}

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("this is version 3"))
}

func sayBye(w http.ResponseWriter, r *http.Request) {
       // 就寝4秒  上面设置了3秒写超时,所以接见 “/bye“路由会涌现没有响应的征象
    time.Sleep(4 * time.Second)              
    w.Write([]byte("bye bye ,this is v3 httpServer"))
}

以上就是golang http怎样运用的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
golang http怎样运用_后端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>