Go语言 Web框架——Gin 笔记|青训营笔记

151 阅读2分钟

这是我参与第五届青训营笔记创作活动的第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框架是非常简单和易学的,但是个人感觉现在还是没有特别好的学习的文档。后续准备再去阅读一下官方文档,深入学习一下。