整理一下golang中各种http的发送方式

最初的一些项目中,很多的地方都使用到了golang发送http请求,之后再对请求收到的结果进行一些处理,所用到的模式也比较固定,这里整理一下集中http的发送方式,先记录这么多,再一点一点添加。

最基本的场景

方式一 使用http.Newrequest

先生成http.client -> 再生成 http.request -> 之后提交请求:client.Do(request) -> 处理返回结果,每一步的过程都可以设置一些具体的参数,下面是一个最朴素最基本的例子:
  1. //question ???将stdout重定向为response信息???
  2. package main
  3. import (
  4. "fmt"
  5. "io"
  6. "net/http"
  7. "os"
  8. )
  9. func main() {
  10. //生成client 参数为默认
  11. client := &http.Client{}
  12. //生成要访问的url
  13. url := "http://www.baidu.com"
  14. //提交请求
  15. reqest, err := http.NewRequest("GET", url, nil)
  16. if err != nil {
  17. panic(err)
  18. }
  19. //处理返回结果
  20. response, _ := client.Do(reqest)
  21. //将结果定位到标准输出 也可以直接打印出来 或者定位到其他地方进行相应的处理
  22. stdout := os.Stdout
  23. _, err = io.Copy(stdout, response.Body)
  24. //返回的状态码
  25. status := response.StatusCode
  26. fmt.Println(status)
  27. }

方式二 先生成client,之后用client.get/post..

底层是用的方式一

client结构自己也有一些发送api的方法,比如client.get,client.post,client.postform..等等。基本上涵盖了主要的http请求的类型,通常不进行什么特殊的配置的话,这样就可以了,其实client的get或者post方法,也是对http.Newerequest方法的封装,里面还额外添加了req.Header.Set(“Content-Type”, bodyType)一般用的话,也是ok的。

方式三 http. Get/Post..

底层是用的方式二

具体实现的时候,还是采用的先前提到的模式,先生成一个默认的client,之后调用http.Newrequest方法。