Go标准库net/http提供简洁高效的HTTP客户端支持,可直接发送GET/POST请求;需正确构造Request、设置Header、处理请求体并关闭响应体;推荐用url.Values编码参数,POST表单用PostForm,JSON数据需手动序列化并设Content-Type;生产环境必须配置超时。
Go语言标准库 net/http 提供了简洁、高效、线程安全的HTTP客户端支持,无需额外依赖即可发送GET和POST请求。关键在于正确构造http.Request、设置必要的Header(如Content-Type)、处理请求体(尤其是POST),并及时关闭响应体。
GET请求通常将参数拼接在URL后。推荐使用url.Values构建查询字符串,避免手动拼接和编码错误。
示例代码:
package mainimport ( "fmt" "io" "net/http" "net/url" )
func main() { // 构建查询参数 params := url.Values{} params.Set("q", "golang http client") params.Set("page", "1")
// 拼接完整URL baseURL := "https://httpbin.org/get" fullURL := baseURL + "?" + params.Encode() // 发起GET请求 resp, err := http.Get(fullURL) if err != nil { panic(err) } defer resp.Body.Close() // 必须关闭响应体,防止连接泄漏 // 读取响应内容 body, _ := io.ReadAll(resp.Body) fmt.Println(string(body))}
提交表单类数据时,需设置Content-Type: application/x-www-form-urlencoded,并将键值对用url.Values编码后作为请求体。
http.PostForm可简化操作(自动设置Header和编码)http.NewRequest + http.DefaultClient.Do
示例(使用PostForm):
resp, err := http.PostForm("https://httpbin.org/post", url.Values{
"name": {"Alice"},
"age": {"30"},
})
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))向API发送结构化数据常用JSON格式。需手动序列化结构体、设置Content-Type: application/json,并传入bytes.NewReader作为请求体。
示例:
import (
"bytes"
"encoding/json"
"net/http"
)
type User struct {
Name string json:"name"
Age int json:"age"
}
func postJSON() {
user := User{Name: "Bob", Age: 25}
jsonData, _ := json.Marshal(user)
req, _ := http.NewRequest("POST", "https://httpbin.org/post", bytes.NewBuffer(jsonData))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))}
生产环境中必须设置超时,避免请求无限阻塞。通过http.Client配置Timeout或更精细的Transport参数。
Timeout:整个请求(连接+读写)的总时限Transport中可单独控制IdleConnTimeout、TLSHandshakeTimeout等示例(带5秒超时):
client := &http.Client{
Timeout: 5 * time.Second,
}
req, _ := http.NewRequest("G
ET", "https://www./link/c19fa3728a347ac2a373dbb5c44ba1c2", nil)
resp, err := client.Do(req) // 若服务响应超过5秒,此处返回timeout错误
# js
# json
# go
# golang
# go语言
# 编码
# app
# ai
# 键值对
# 标准库
# 字符串
# 结构体
# 线程
相关文章:
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
,怎么在广州志愿者网站注册?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
文字头像制作网站推荐软件,醒图能自动配文字吗?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
建站之星2.7模板:企业网站建设与h5定制设计专题
详解jQuery中基本的动画方法
北京企业网站设计制作公司,北京铁路集团官方网站?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
网站制作的步骤包括,正确网址格式怎么写?
北京制作网站的公司,北京铁路集团官方网站?
如何在阿里云ECS服务器部署织梦CMS网站?
建站之家VIP精选网站模板与SEO优化教程整合指南
建站之星伪静态规则如何正确配置?
制作网站外包平台,自动化接单网站有哪些?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
微课制作网站有哪些,微课网怎么进?
Bpmn 2.0的XML文件怎么画流程图
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何在云主机上快速搭建网站?
制作证书网站有哪些,全国城建培训中心证书查询官网?
Swift中swift中的switch 语句
网站按钮制作软件,如何实现网页中按钮的自动点击?
如何选择美橙互联多站合一建站方案?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
实现虚拟支付需哪些建站技术支撑?
黑客入侵网站服务器的常见手法有哪些?
招贴海报怎么做,什么是海报招贴?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
网站制作公司排行榜,抖音怎样做个人官方网站
详解jQuery停止动画——stop()方法的使用
如何通过服务器快速搭建网站?完整步骤解析
微信推文制作网站有哪些,怎么做微信推文,急?
公司网站的制作公司,企业网站制作基本流程有哪些?
家庭服务器如何搭建个人网站?
高端企业智能建站程序:SEO优化与响应式模板定制开发
建站之星如何优化SEO以实现高效排名?
宁波自助建站系统如何快速打造专业企业网站?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何快速生成凡客建站的专业级图册?
寿县云建站:智能SEO优化与多行业模板快速上线指南
Android使用GridView实现日历的简单功能
制作网站公司那家好,网络公司是做什么的?
C++中引用和指针有什么区别?(代码说明)
如何零成本快速生成个人自助网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
建站之星下载版如何获取与安装?
建站之星安装后如何自定义网站颜色与字体?
*请认真填写需求信息,我们会在24小时内与您取得联系。