Go net/http
net/http 是 Go 标准库里的 HTTP 服务器与客户端基础抽象,也是理解 Go Web 开发边界的第一站。
#type / concept
#status / growing
#tech / dev / backend
#resource / go
[!info] related notes
- 所属 MOC: Go Web 与后端 MOC
- 前置概念: Go 函数, Go context
- 并列概念: Go JSON 与序列化
Go net/http
一句话定义
net/http 是 Go 标准库提供的 HTTP 基础抽象,负责把请求、响应、路由处理和客户端调用组织成统一接口。
核心机制 / 工作原理
学习 net/http 时最重要的不是先记某个框架 API,而是先理解标准库提供的几个基本角色:
http.Handlerhttp.HandlerFunchttp.Requesthttp.ResponseWriter
这套抽象决定了:
- 请求是如何进入业务逻辑的
- 响应是如何被写出的
- 中间件和包装器为什么常常长成那个样子
最小例子 / 最小场景
http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello"))
})
http.ListenAndServe(":8080", nil)
这个例子里最重要的心智是:
- 路由处理本质上就是把一个函数适配成 Handler
- HTTP 服务不是神秘框架行为,而是标准库接口协作
为什么这部分重要
哪怕后面使用 Gin、Echo 或其他框架,理解 net/http 也能帮助你看懂:
- 请求生命周期
- 中间件本质
- 超时、取消和上下文传递
边界与易混淆点
net/http是基础抽象,不等于必须手写所有框架能力- 服务端和客户端都在这个包体系里,但它们的使用心智不同
- 路由只是表层,真正复杂的通常是边界、超时和数据流转