前言
随着golang版本的升级,新版的gin也进行了升级,下面学习一下如何使用新版gin框架并启用http2属性。
一、Gin v1.9.1新版本特性使用说明
1.查看源码
engine的run方法较之前有所改动,之前传的是engine本身,现在传的是eigine.Handler方法:
func (engine *Engine) RunTLS(addr, certFile, keyFile string) (err error) {
debugPrint("Listening and serving HTTPS on %s\n", addr)
defer func() { debugPrintError(err) }()
if engine.isUnsafeTrustedProxies() {
debugPrint("[WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.\n" +
"Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.")
}
err = http.ListenAndServeTLS(addr, certFile, keyFile, engine.Handler())
return
}
点击engine.Handler方法,发现通过UseH2C参数控制是否启用http2:
func (engine *Engine) Handler() http.Handler {
if !engine.UseH2C {
return engine
}
h2s := &http2.Server{}
return h2c.NewHandler(engine, h2s)
}
UseH2C属性默认值为false,及如果不显示设置,则与之前的版本的gin功能一样,使用HTTP1协议。
2.使用方式
设置改属性为true即可:
func main() {
r := gin.Default()
r.UseH2C = true
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})
log.Fatal(r.RunTLS(":443", "cert.pem", "key.pem"))
}
总结
Go 1.20 是一个重要的版本,引入了一些新功能和改进。 改进了对 HTTP/2 的支持,包括更好的流控制和更好的服务器推送。
HTTP/2的原理基于SPDY协议,并进行了改进和优化。HTTP/2使用二进制格式传输数据,而不是文本格式,从而减小了数据的大小和传输时间。它还支持多路复用,将多个HTTP请求和响应打包在同一个TCP连接中,从而减少了网络延迟和通信成本。此外,HTTP/2还引入了头部压缩和优先级处理等功能,进一步提高了网络效率和性能。
2645

被折叠的 条评论
为什么被折叠?



