在go语言中发送http请求主要通过net/http包实现。1. 发送基本get请求可使用http.get函数,并注意处理错误、关闭响应体和读取内容;2. 自定义header和参数需构造http.request对象,通过req.header.set添加头部信息,查询参数可用url.values构建;3. post请求带json数据需构造结构体并序列化为字节流,设置content-type为application/json,并用bytes.buffer包装请求体;4. 常见注意事项包括:始终关闭resp.body防止资源泄露、合理设置超时控制、统一使用http.client管理请求以便配置策略。掌握这些关键点后即可高效完成http通信操作。

发送HTTP请求在Go语言中是很常见的操作,无论是调用API、抓取网页数据还是做微服务通信,都会用到。Golang标准库里的net/http包已经提供了非常方便的接口,使用起来既灵活又高效。

下面介绍几种常用的方式和注意事项,帮助你快速上手用Go写HTTP客户端。

最简单的场景就是发起一个GET请求获取远程资源,比如访问一个公开的REST API。
立即学习“go语言免费学习笔记(深入)”;
resp, err := http.Get("https://api.example.com/data")
if err != nil {
// 处理错误
}
defer resp.Body.Close()
// 读取响应体
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))上面这段代码做了几件事:

http.Get发起GET请求注意:实际项目中建议加上超时控制,可以通过http.Client设置。
有时候我们需要添加一些自定义Header,比如认证Token或者User-Agent,这时候就不能直接用http.Get了,需要手动构造http.Request对象。
步骤如下:
示例代码:
req, _ := http.NewRequest("GET", "https://api.example.com/secure-data", nil)
req.Header.Set("Authorization", "Bearer your_token_here")
req.Header.Set("User-Agent", "MyApp/1.0")
client := &http.Client{}
resp, err := client.Do(req)如果你要传查询参数,可以拼接URL字符串,或者用url.Values来构建:
baseURL := "https://api.example.com/search"
params := url.Values{}
params.Add("q", "golang")
params.Add("page", "1")
fullURL := baseURL + "?" + params.Encode()很多API都需要通过POST提交JSON格式的数据,比如登录接口或创建资源。
你可以这样做:
json.Marshal序列化为字节流示例:
type LoginRequest struct {
Username string `json:"username"`
Password string `json:"password"`
}
data := LoginRequest{
Username: "test",
Password: "123456",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.example.com/login", bytes.NewBuffer(jsonData))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)常见坑点:
io.Reader类型,不能直接传字符串或结构体,必须包装成bytes.Buffer等类型用Golang发HTTP请求其实不难,主要掌握几个关键点:
http.Get,复杂情况用http.NewRequest
http.Client统一管理请求,方便设置超时、重试等策略基本上就这些,刚开始可能觉得有些繁琐,但用几次就能熟练了。
以上就是如何使用Golang发送HTTP请求 Golang实现HTTP客户端的方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号