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
})
})