ZBLOG

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

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

package http

import (
    "bytes"
    "io/ioutil"
    "net/http"
)

type Request struct {
    URL         string            // 请求的url
    Method      string            // 请求方式
    Headers     map[string]string // 请求头
}

// 发送 HTTP 请求并返回响应体和错误(如果有)
func (r *Request) Send() ([]byte, error) {
    client := &http.Client{}
    
    // 创建一个请求对象
    req, err := http.NewRequest(r.Method, r.URL, nil)
    
    if err != nil {
        return nil, err
    }
    
    // 设置请求头部信息
    for key, value := range r.Headers {
        req.Header.Set(key, value)
    }

    resp, err := client.Do(req)

    if err != nil {
        return nil, err
    }

    defer resp.Body.Close()

	// 读取响应体信息
	bodyBytes, err := ioutil.ReadAll(resp.Body)

	if err != nil {
	    return nil, err
	}

	return bodyBytes, nil
}

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

req := &http.Request{
	URL:     "https://api.example.com/get",
	Method:  "GET",
	Headers: map[string]string{"Content-Type": "application/json"},
}

respBodyBytes, err := req.Send()
if err != nil {
	fmt.Println("Error:",err.Error())
} else {
	fmt.Println(string(respBodyBytes))
}

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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?