ZBLOG

golang 封装一个公用的http 请求。 对外暴露 请求的url,请求方式,请求头

好的,以下是一个 golang 封装的公用 http 请求示例:

  1. package http
  2. import (
  3. "bytes"
  4. "io/ioutil"
  5. "net/http"
  6. )
  7. type Request struct {
  8. URL string // 请求的url
  9. Method string // 请求方式
  10. Headers map[string]string // 请求头
  11. }
  12. // 发送 HTTP 请求并返回响应体和错误(如果有)
  13. func (r *Request) Send() ([]byte, error) {
  14. client := &http.Client{}
  15. // 创建一个请求对象
  16. req, err := http.NewRequest(r.Method, r.URL, nil)
  17. if err != nil {
  18. return nil, err
  19. }
  20. // 设置请求头部信息
  21. for key, value := range r.Headers {
  22. req.Header.Set(key, value)
  23. }
  24. resp, err := client.Do(req)
  25. if err != nil {
  26. return nil, err
  27. }
  28. defer resp.Body.Close()
  29. // 读取响应体信息
  30. bodyBytes, err := ioutil.ReadAll(resp.Body)
  31. if err != nil {
  32. return nil, err
  33. }
  34. return bodyBytes, nil
  35. }

使用该封装后,我们可以这样发送一个 GET 请求:

  1. req := &http.Request{
  2. URL: "https://api.example.com/get",
  3. Method: "GET",
  4. Headers: map[string]string{"Content-Type": "application/json"},
  5. }
  6. respBodyBytes, err := req.Send()
  7. if err != nil {
  8. fmt.Println("Error:",err.Error())
  9. } else {
  10. fmt.Println(string(respBodyBytes))
  11. }

同理,我们也可以通过修改 Method、URL 和 Headers 属性来构造 POST 或其它类型的请求。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=3275

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?