如何用Golang处理HTTP响应状态错误_Golang HTTP响应状态错误实践 golang in action
答案:处理 HTTP 响应需要检查 StatusCode 并关闭 Body。首先,确定 resp.StatusCode 是否为 http.StatusOK。

在 Go 语言中,关键在于及时检查响应的 Status 和 StatusCode,并正确释放资源。p>
如果在发出请求后使用 http.Get 或 http.Client.Do,则必须检查 resp.StatusCode。即使请求没有网络错误,状态码也可能指示业务级别的故障,例如 404、500 等。
通常的做法是与 http.StatusOK(即 200)进行比较:resp. err := http.Get("https://api.example.com/data") if err != nil { log.Fatal(err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { log.Printf("请求失败:d s", resp.StatusCode, resp.Status) return } 200 状态场景
并非所有错误都应该直接中断。有些接口可能使用 400 表示参数错误,401 表示未授权,这些需要单独处理。 log.Println("电影电视,请方法Token") case http.StatusNotFound: log.Println("电影设计最作") default: log.Printf("服务器错误: d", resp.StatusCode) } 确保 Body 已正确关闭
无论状态码是什么,只要 resp 不为 nil,就可以调用 resp.Body.Close() 来防止内存泄漏。即使状态码为 500,也必须读取并关闭 Body。
28 查看详情
常见错误是在返回之前判断状态时忘记关闭连接:❌ 错误示例:if resp.StatusCode != 200 { return // 忘记关闭连接,可能导致连接泄露 }
正确的方法是使用 defer,或在每个分支中显示。封装通用错误处理函数
在项目中,可以封装一个辅助函数,用于处理状态码并返回可读的错误信息: func checkResponse(resp *http.Response) error { if resp.StatusCode == http.StatusOK { return nil } body, _ := io.ReadAll(resp.Body) return fmt.Errorf("HTTP d: s, body: s", resp.StatusCode, resp.Status, string(body)) }
使用方法:if err := checkResponse(resp); err != nil { log.Fatal(err) }
以上是如何使用 Golang 处理 HTTP 响应状态错误_Golang HTTP 响应状态错误练习详细内容,更多内容请关注乐哥常识网其他相关文章!Golang 中查找索引字符的方法
