1.1 Gin框架的介绍
gin框架是一个golang语言编写的web框架,近年来,由于golang语言作为后端开发语言的火爆,gin框架的作用也越来越突出,gin框架作为golang语言的主流web框架,有着简单,轻量,性能优越等特点
1.2 gin框架的安装和运行一个demo
1.2.1 安装Golang,并配置golang环境,确保golang环境正确可用
1.2.2 下载并安装gin
具体命令为:go get -u github.com/gin-gonic/gin
1.2.3 进入项目中的demo根目录,利用golang的mod管理进行初始化工作,命令为:
go mod init demo
1.2.4 定义一个main文件,写下相关的POST和GET请求
package main
import ("github.com/gin-gonic")
func main() {
r := gin.Default()
r.GET("/test/get", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "this is a test example",
})
})
r.POST("/test/user/create", func(c *gin.Context) {
var userInfo struct {
Name string `json:"name"`
Address string `json:"address"`
Age string `json:"age"`
}
if err := c.Bind(&userInfo); err == nil {
c.JSON(200, gin.H{
"message": "success"
})
} esle {
c.JSON(500, gin.H{"error": err.Error()})
}
})
r.Run(":8000")
}
1.2.5 本地运行gin文件
go run main.go
1.2.6浏览器访问
127.0.0.1:8000/test/get
1.3 gin框架的一些基本介绍
1.3.1 路由配置
路由这块gin框架遵循Restful原则,支持GET,POST,PUT,DELETE操作
1.3.1.1 GET请求参数获取
如果是GET请求参数为/test?testID=3011
用以下方法进行获取
r.GET("/test", func(c *gin.Context) {
testId := c.Query("testID")
c.JSON(200, gin.H{
"testID": testId
})
})
如果是GET url为/test/3011
按照以下方法获取
r.GET("/test", func(c *gin.Context) {
testId := c.Param("id")
c.JSON(200, gin.H{
"testID": testId
})
})
如果是多个参数,可以用获取结构体的方式
/test?testID=3011&testName=test
r.GET("/test", func(c *gin.Context) {
var testInfo struct {
TestID string `json:"testID"`
TestName string `json:"testName"`
}
if err := c.ShouldBind(&testInfo); err == nil {
c.JSON(200, gin.H{
"message": "success"
})
} esle {
c.JSON(500, gin.H{"error": err.Error()})
}
})
POST请求获取参数主要有两种,一种是通过表单,一种是绑定结构体
绑定结构体和get类似
r.POST("/test", func(c *gin.Context) {
var testInfo struct {
TestID string `json:"testID"`
TestName string `json:"testName"`
}
if err := c.ShouldBind(&testInfo); err == nil {
c.JSON(200, gin.H{
"message": "success"
})
} esle {
c.JSON(500, gin.H{"error": err.Error()})
}
})
获取form表单数据如下图所示
r.POST("/test", func(c *gin.Context) {
testId := c.PostForm("testID")
testName := c.PostForm("testName")
c.JSON(200, gin.H{
“testID”:testId, "testName":testName
})
})