1.Gin是什么?
Gin是golang的轻量级Web框架,具有高性能的优点。
代码仓库地址:https://github.com/gin-gonic/gin
Gin中文说明文档:https://www.kancloud.cn/shuangdeyu/gin_book/949414
Gin的Hello World:
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}
代码中的 gin.H是 map[string]interface{} 的一个快捷名称 ,写起来会更加简洁:
type H map[string]interface{
}
2.Gin的优势?
- Gin是用Golang编写的Web框架。它是一个类似于martini但拥有更好性能的API框架,由于底层基于httprouter,速度提高了40倍,因此具有很高的性能和效率。
- Gin当前是Go语言环境下最受欢迎的WEB框架。
httprouter是一个高性能路由分发器,它负责将不同方法的多个路径分别注册到各个handle函数,当收到请求时,负责快速查找请求的路径是否有相对应的处理函数,并且进行下一步业务逻辑处理。
golang的gin框架采用了httprouter进行路由匹配,httprouter 是通过基数树(radix tree)来进行高效的路径查找;同时路径还支持两种通配符匹配。
拓展:
Go 语言最流行的两个轻量级 Web 框架分别是 Gin 和 Echo,这两个框架大同小异,都是插件式轻量级框架,背后都有一个开源小生态来提供各式各样的小插件,这两个框架的性能也都非常好,裸测起来跑的飞快。
https://zhuanlan.zhihu.com/p/148022541
golang的6个最佳web框架:
Beego: 一个Go语言下开源的,高性能Web框架
- https://github.com/astaxie/beego
- https://beego.me
Buffalo: 一个Go语言下快速Web开发框架
- https://github.com/gobuffalo/buffalo
- https://gobuffalo.io
Echo: 一个高性能,极简的Web框架
- https://github.com/labstack/echo
- https://echo.labstack.com
Gin: 一个Go语言写的HTTP Web框架。它提供了Martini风格的API并有更好的性能。
- https://github.com/gin-gonic/gin
- https://gin-gonic.github.io/gin
Iris: 目前发展最快的Go Web框架。提供完整的MVC功能并且面向未来。
- https://github.com/kataras/iris
- https://iris-go.com
Revel: 一个高生产率,全栈Go语言的Web框架。
- https://github.com/revel/revel
- https://revel.github.io
3.Gin的功能特性?
(1) gin.Engine
Engine 是 Gin 框架最重要的数据结构,它是框架的入口。我们通过 Engine 对象来定义服务路由信息、组装插件、运行服务。
Engine 对象很简单,因为引擎最重要的部分 —— 底层的 HTTP 服务器使用的是 Go 语言内置的 http server,Engine 的本质只是对内置的 HTTP 服务器的包装,让它使用起来更加便捷。
gin.Default() 函数会生成一个默认的 Engine 对象,里面包含了 2 个默认的常用插件,分别是 Logger 和 Recovery,Logger 用于输出请求日志,Recovery 确保单个请求发生 panic 时记录异常堆栈日志,输出统一的错误响应。
func Default() *Engine {
engine := New()
engine.Use(Logger(), Recovery())
return engine
}