做大项目的过程中,选择使用Gin作为Web框架,对比之前使用过的Spring框架,我认为Gin更加简洁,可以说是开箱即用,这篇笔记简要记录一下Gin的基本功能使用。
Gin是什么
Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。如果你需要极好的性能,使用 Gin 吧。
快速使用
首先需要安装Gin依赖
go get -u github.com/gin-gonic/gin
并在项目中导入
import "github.com/gin-gonic/gin
可以使用一个简单的小程序来验证Gin是否安装成功
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() // 监听并在 0.0.0.0:8080 上启动服务
}
基本功能
路由
Gin配置路由的方法非常简单,在创建路由之后(例如使用gin.Default),只需要使用对应的HTTP请求方法,输入对应的请求路径,即可完成路由配置,Gin支持的请求方法如下:
- GET
- POST
- DELETE
- PATCH
- PUT
- OPTIONS
- HEAD
如果想配置一个路径为/hello,请求方法为GET的路由,代码如下
router := gin.Default
router.GET("/hello", func(c *gin.Context) {})
Gin还提供了路由组的功能,对于有相同前缀的路由可以归为一个路由组,一个简易路由组的实现代码如下
router := gin.Default()
// 简单的路由组: v1
v1 := router.Group("/v1")
{
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/read", readEndpoint)
}
获取请求参数
URL参数
Gin使用Query方法来获取URL后附带的参数,由于参数一般为键值对的形式存在,所以需要提供key来进行查询,如果不存在则返回""
请求体参数
Gin使用PostForm方法来获取请求体参数,同样需要提供key来进行查询,不存在则返回""
路由参数
路由参数指的是使用动态路由时,发生变化的那一部分,这在REST风格的接口中经常出现,Gin使用Param来获取,下面是一个简单示例
router := gin.Default()
// 此 handler 将匹配 /user/john 但不会匹配 /user/ 或者 /user
router.GET("/user/:name", func(c *gin.Context) {
name := c.Param("name")
c.String(http.StatusOK, "Hello %s", name)
})