gin-安裝,修改啟動端口,get/post 請求參數,模型綁定shouldbind,自定義驗證器/表單驗證


 

第一步初始化

1.新建文件夾(項目名) 2.終端進入該項目,敲 go mod init gin-class 產生go.mode文件 3.golang打開,Go Modules設置GOPROXY=https://goproxy.io 4.新建mian.go,下面代碼粘貼進去 5.運行 
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() // listen and serve on 0.0.0.0:8080 } 

修改啟動端口

# 默認是8080端口 r.Run(":8888") 

get請求url取參數

//get請求 "/get/123?user=jeff&pwd=admin" r.GET("/get/:id", func(c *gin.Context) { id := c.Param("id") user := c.DefaultQuery("user","jeff") pwd := c.Query("pwd") c.JSON(200, gin.H{ "message": "hell gyy", "id":id, "user":user, "pwd":pwd, }) }) Param:取“?”之前的參數 Query:取“?”之后的參數 DefaultQuery:優先取key值,沒有就用默認值 

Post請求獲取form參數

r.POST("/post", func(c *gin.Context) { user := c.DefaultPostForm("user","jeff") pwd := c.PostForm("pwd") c.JSON(200, gin.H{ "message": "hell gyy", "user":user, "pwd":pwd, }) }) DefaultPostForm :優先取key值,沒有就用默認值 PostForm:取key 

模型綁定ShouldBind

ShouldBindJSON

package main import "github.com/gin-gonic/gin" type PostParams struct { Name string `json:"name"` Age int `json:"age"` Sex bool `json:"sex"` } func main() { r.POST("/testBind", func(c *gin.Context) { p := PostParams{} err := c.ShouldBindJSON(&p) if err != nil{ c.JSON(400,gin.H{ "msg":"出錯!", "data":gin.H{}, }) }else{ c.JSON(200,gin.H{ "msg":"success", "data":p, }) } c.JSON(200, gin.H{ }) }) r.Run(":8888") // listen and serve on 0.0.0.0:8080 } 

ShouldBinduri

package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() //攜帶中間件啟動路由 r.POST("/testBind/:name/:age/:sex", func(c *gin.Context) { p := PostParams{} err := c.ShouldBindUri(&p) if err != nil{ c.JSON(400,gin.H{ "msg":"出錯!", "data":gin.H{}, }) }else{ c.JSON(200,gin.H{ "msg":"success", "data":p, }) } c.JSON(200, gin.H{ }) }) r.Run(":8888") // listen and serve on 0.0.0.0:8080 } type PostParams struct { Name string `json:"name" uri:"name"` Age int `json:"age" uri:"age"` Sex bool `json:"sex" uri:"ses"` } 

ShouldBindQuery

package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() //攜帶中間件啟動路由 r.POST("/testBind", func(c *gin.Context) { p := PostParams{} err := c.ShouldBindQuery(&p) if err != nil{ c.JSON(400,gin.H{ "msg":"出錯!", "data":gin.H{}, }) }else{ c.JSON(200,gin.H{ "msg":"success", "data":p, }) } c.JSON(200, gin.H{ }) }) r.Run(":8888") // listen and serve on 0.0.0.0:8080 } type PostParams struct { Name string `json:"name" uri:"name" form:"name"` Age int `json:"age" uri:"age" form:"age"` Sex bool `json:"sex" uri:"ses" form:"sex"` } 

自定義驗證器,表單驗證

binding:"required,mustBig"

package main import ( "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" "github.com/go-playground/validator/v10" ) type PostParams struct { Name string `json:"name" uri:"name" form:"name"` Age int `json:"age" uri:"age" form:"age" binding:"required,mustBig"` Sex bool `json:"sex" uri:"ses" form:"sex"` } // 過濾年齡小於18 func mustBig(f1 validator.FieldLevel) bool { if f1.Field().Interface().(int) <=18{ return false } return true } func main() { r := gin.Default() //攜帶中間件啟動路由 if v, ok := binding.Validator.Engine().(*validator.Validate); ok { v.RegisterValidation("mustBig", mustBig) } r.POST("/testBind", func(c *gin.Context) { p := PostParams{} err := c.ShouldBindJSON(&p) if err != nil{ c.JSON(400,gin.H{ "msg":"小於18歲了!", "data":gin.H{}, }) }else{ c.JSON(200,gin.H{ "msg":"success", "data":p, }) } c.JSON(200, gin.H{ }) }) r.Run(":8888") // listen and serve on 0.0.0.0:8080 } 

選擇了IT,必定終身學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM