GIN实践 | 青训营

116 阅读2分钟

做大项目的过程中,选择使用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)
})