这是我参与第五届青训营笔记创作活动的第9天,今天是初二了,再过几天又要慢慢恢复学习状态准备进入下一阶段的战斗了,今天我将总结一下Go语言中的Web框架——Gin的相关概念,主要从Gin的简介与Gin的使用两方面来进行总结。
Gin简介
Gin是一个golang的Web框架,API友好,具有快速灵活,容错方便等特点,与 martini 框架类似,但拥有更好的性能,借助高性能的 httprouter,速度提升了近 40 倍。
官方文档网址:Gin官方文档
Gin的引入
go mod init moduleName //初始化module
go get -u github.com/gin-gonic/gin
使用示例
此为官方文档摘录的example.go,这里初始化了一个路由,绑定了路由规则,当使用GET方法访问/ping路由时返回相应{"message":"pong"}
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()
}
具体操作
初始化
首先需要是生成一个路由,这是 gin 的核心,默认带有 Logger 和 Recovery 两个中间件
r := gin.Default()
绑定路由规则
此处将函数绑定至"/api"路由,
r.GET("/api", func(c *gin.Context) {
response= gin.H{
"message": "pong",
})
c.JSON(http.StatusOK, response)
})
关于Gin.H,源码中描述如下:
// H is a shortcut for map[string]interface{}type
H map[string] interface{}
也就是说:
c.JSON(http.StatusOK, gin.H{ "status": "登录成功"})
等价于:
c.JSON(http.StatusOK, map[string]interface{}{ "status": "登录成功"})
可以认为是Gin框架中一种生成字典的简易写法。
路由聚合
在开发中,我们可以使用如下这种方式来把路由组绑定至我们的根路由,并将函数绑定至我们的相应路由中:
func initRouter(r *gin.Engine) {
apiRouter := r.Group("/api") //路由组
apiRouter.POST("/api1", controller.API1) //POST方法
apiRouter.GET("/api2", controller.API2) //GET方法
}
创建函数
func API1(c *gin.Context) {
response= gin.H{
"message": "pong",
})
c.JSON(http.StatusOK, response)
}
其实个人感觉在日常使用中,这上面的这一些简短的函数与一些方法已经足够我们日常使用,所以我个人觉得Gin框架是非常简单和易学的,但是个人感觉现在还是没有特别好的学习的文档。后续准备再去阅读一下官方文档,深入学习一下。