值得一看
广告
彩虹云商城
广告

热门广告位

Golang net/net/http HTTP请求与响应处理示例

Go语言通过net/http包实现HTTP客户端与服务端。使用http.Get发起GET请求,需defer关闭resp.Body;发送JSON数据可用http.Post或http.NewRequest;服务端通过http.HandleFunc注册路由,ResponseWriter返回响应;读取请求体时用json.NewDecoder解析流式数据;注意资源释放与错误处理。

golang net/net/http http请求与响应处理示例

Go语言的net/http包提供了简洁而强大的HTTP客户端和服务端支持。通过标准库,可以轻松实现HTTP请求发送和响应处理。以下是一些常见用法示例,涵盖客户端发起请求与服务端处理响应的基本场景。

发起HTTP GET请求

使用http.Get可以快速向远程服务器发起GET请求。返回的响应包含状态码、头信息和响应体。

示例代码:

resp, err := http.Get("https://httpbin.org/get")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Printf("状态码: %d\n", resp.StatusCode)
fmt.Printf("响应体: %s\n", body)

注意:resp.Body必须关闭以释放连接资源,通常使用defer确保关闭。

立即学习“go语言免费学习笔记(深入)”;

发起带参数的POST请求

发送表单数据或JSON内容时,可使用http.Posthttp.NewRequest结合自定义客户端。

发送JSON示例:

data := map[string]string{"name": "golang", "version": "1.21"}
jsonData, _ := json.Marshal(data)
resp, err := http.Post("https://httpbin.org/post", "application/json", bytes.NewBuffer(jsonData))
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))

这种方式适合调用REST API,Content-Type设置为application/json。

处理HTTP请求的服务端

Go也可以作为HTTP服务端,通过注册路由和处理器函数来响应请求。

PatentPal专利申请写作

PatentPal专利申请写作

AI软件来为专利申请自动生成内容

PatentPal专利申请写作13

查看详情
PatentPal专利申请写作

简单服务端示例:

http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, `{"message": "Hello from Go!"}`)
})
log.Println("服务器启动在 :8080")
log.Fatal(http.ListenAndServe(":8080", nil))

HandleFunc用于绑定路径与处理函数,ResponseWriter用于写入响应头和正文。

读取请求体与解析参数

服务端常需读取客户端提交的数据。对于POST或PUT请求,可通过r.Body读取原始数据。

示例:接收JSON请求体

http.HandleFunc("/submit", func(w http.ResponseWriter, r *http.Request) {
var input map[string]interface{}
if r.Body == nil {
http.Error(w, "请求体为空", 400)
return
}
err := json.NewDecoder(r.Body).Decode(&input)
if err != nil {
http.Error(w, err.Error(), 400)
return
}
fmt.Fprintf(w, "收到数据: %+v", input)
})

使用json.NewDecoder能高效解析流式数据,适用于大体积请求体。

基本上就这些。net/http的设计简洁直观,无论是写微服务还是调用外部接口都很方便。掌握基本的请求构造与响应解析,就能应对大多数Web交互场景。不复杂但容易忽略的是资源释放和错误处理,务必养成良好习惯。

相关标签:

golang js json go 处理器 go语言 app 路由 rest api 状态码 标准库 golang json 接口 Go语言 http

大家都在看:

Golang如何实现微服务自动注册与发现
Golang HTTP请求重定向与状态码处理实践
如何使用Golang反射设置结构体默认值
Golang创建自定义包与模块实践
Golang gRPC流式请求异常处理
温馨提示: 本文最后更新于2025-10-10 22:28:05,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞7赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容