2.1goweb内置的 net/http 包
HTTP 服务器实现
Go 内置的 net/http 包是最基础的 HTTP 服务器实现,无需依赖第三方库
package main import ( "fmt" "log" "net/http" ) func main() { // 匿名注册路由和处理函数 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World! %s", r.URL.Path) }) //注册api路径路由和处理函数 http.HandleFunc("/api", apiHandler) // 启动服务器(监听 80 端口) log.Println("服务器启动在 :80") log.Fatal(http.ListenAndServe(":80", nil)) } func apiHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "API 路径: %s", r.URL.Path) }
go标准库中文文档地址 Go语言中文网
Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国Go语言文档中文版,Go语言中文网,中国 Golang 社区,Go语言学习园地,致力于构建完善的 Golang 中文社区,Go语言爱好者的学习家园。分享 Go 语言知识,交流使用经验https://studygolang.com/pkgdoc
http.ListenAndServe
http.ListenAndServe(addr string, handler Handler) error 是 Go 标准库中启动 HTTP 服务器的入口函数,主要作用包括:
- 监听地址:通过 addr 参数指定监听地址(如 ":8080")。
- 处理器注册:handler 参数为 HTTP 请求处理器(可为 nil,默认使用 DefaultServeMux 路由)。
- 错误处理:返回错误信息(如端口占用)。
当 handler 为 nil 时,默认使用 http.DefaultServeMux 路由表,开发者可通过 http.HandleFunc() 或 http.Handle() 注册路由逻辑
底层实现细节
server := &Server{ Addr: addr, Handler: handler, } return server.ListenAndServe()
http.Server结构体关键字段
type Server struct { Addr string // 监听地址(默认":http"即80端口) Handler Handler // 请求处理器(默认DefaultServeMux) ReadTimeout time.Duration // 读取请求超时(含Header和Body) WriteTimeout time.Duration // 写入响应超时(从接收请求开始计时) IdleTimeout time.Duration // 空闲连接超时(默认使用ReadTimeout) MaxHeaderBytes int // 请求头最大字节数(默认1MB) TLSConfig *tls.Config // TLS配置(用于HTTPS) ConnState func(net.Conn, ConnState) // 连接状态回调 ErrorLog *log.Logger // 错误日志记录器 }
通过http.Server结构体配置服务器参数
srv := &http.Server{ Addr: ":8080", ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, IdleTimeout: 120 * time.Second, MaxHeaderBytes: 1
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。