在现代软件开发中,Go语言HTTP请求是构建微服务、API客户端和Web爬虫的基础技能。Go标准库中的 net/http 包提供了强大而简洁的接口,让开发者可以轻松发起 HTTP 请求。本文将手把手教你如何使用 net/http包教程 中的核心功能,实现 GET 和 POST 请求,即使是编程新手也能快速上手!
在开始编写代码前,我们需要导入 Go 的标准库:
package mainimport ( "fmt" "io" "net/http" "strings") GET 请求是最常见的 HTTP 方法,用于从服务器获取数据。下面是一个完整的例子:
func sendGetRequest() { // 构建请求 URL url := "https://httpbin.org/get" // 发起 GET 请求 resp, err := http.Get(url) if err != nil { fmt.Printf("请求失败: %v\n", err) return } defer resp.Body.Close() // 确保关闭响应体 // 读取响应内容 body, err := io.ReadAll(resp.Body) if err != nil { fmt.Printf("读取响应失败: %v\n", err) return } fmt.Printf("状态码: %d\n", resp.StatusCode) fmt.Printf("响应内容:\n%s\n", string(body))} 这段代码展示了如何使用 http.Get() 发起一个简单的 GET 请求,并处理响应。注意一定要调用 defer resp.Body.Close() 来释放资源,避免内存泄漏。
POST 请求通常用于向服务器提交数据,比如表单或 JSON。下面是两种常见场景的实现方式。
func sendPostForm() { url := "https://httpbin.org/post" formData := "name=GoLang&version=1.22" resp, err := http.Post( url, "application/x-www-form-urlencoded", strings.NewReader(formData), ) if err != nil { fmt.Printf("POST 请求失败: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Printf("POST 响应:\n%s\n", string(body))} func sendPostJSON() { url := "https://httpbin.org/post" jsonStr := `{"language": "Go", "use_case": "HTTP Client"}` resp, err := http.Post( url, "application/json", strings.NewReader(jsonStr), ) if err != nil { fmt.Printf("JSON POST 失败: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Printf("JSON POST 响应:\n%s\n", string(body))} 以上示例清晰展示了如何使用 Go发送GET请求 和 Go发送POST请求。通过 http.Post() 函数,我们可以灵活地指定 Content-Type 和请求体。
将上述函数整合到 main 函数中,即可运行测试:
func main() { fmt.Println("=== 发送 GET 请求 ===") sendGetRequest() fmt.Println("\n=== 发送 POST 表单 ===") sendPostForm() fmt.Println("\n=== 发送 POST JSON ===") sendPostJSON()} defer resp.Body.Close() 关闭响应体。http.Client 和 http.NewRequest。strings.NewReader 或 bytes.NewBuffer 将字符串或字节切片转换为 io.Reader。掌握 net/http 包的基本用法后,你就可以轻松构建各种网络应用了。希望这篇 net/http包教程 能帮助你迈出 Go 网络编程的第一步!
本文由主机测评网于2025-12-13发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025127154.html