go Gin安裝及初始化操作示例
第一步初始化
1.新建文件夾(項目名)
2.終端進(jìn)入該項目,敲 go mod init gin-class 產(chǎn)生go.mode文件
3.golang打開,Go Modules設(shè)置GOPROXY=https://goproxy.io
4.新建mian.go,下面代碼粘貼進(jìn)去
5.運(yùn)行
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
}
修改啟動端口
# 默認(rèn)是8080端口
r.Run(":8888")
get請求url取參數(shù)
//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:取“?”之前的參數(shù)
Query:取“?”之后的參數(shù)
DefaultQuery:優(yōu)先取key值,沒有就用默認(rèn)值
Post請求獲取form參數(shù)
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 :優(yōu)先取key值,沒有就用默認(rèn)值
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
}


以上就是gin安裝及初始化操作示例的詳細(xì)內(nèi)容,更多關(guān)于gin安裝及初始化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang實現(xiàn)頁面靜態(tài)化操作的示例代碼
這篇文章主要介紹了golang實現(xiàn)頁面靜態(tài)化操作的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
golang監(jiān)聽ip數(shù)據(jù)包的實現(xiàn)步驟(golang純享版)
這篇文章主要給大家介紹了golang監(jiān)聽ip數(shù)據(jù)包的實現(xiàn)步驟,本文以ip4 作為案例進(jìn)行包抓取示范,ip6抓取與ip4方式異曲同工,可自行舉一反三得出,文中通過圖文結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
Golang使用CGO與Plugin技術(shù)運(yùn)行加載C動態(tài)庫
這篇文章主要介紹了Golang使用CGO與Plugin技術(shù)運(yùn)行加載C動態(tài)庫,Golang?程序在運(yùn)行時加載C動態(tài)庫的技術(shù),跳過了Golang項目編譯階段需要鏈接C動態(tài)庫的過程,提高了Golang項目開發(fā)部署的靈活性2022-07-07
一文帶你玩轉(zhuǎn)Golang Prometheus Eexporter開發(fā)
本文分兩大塊,一是搞清楚prometheus四種類型的指標(biāo)Counter,Gauge,Histogram,Summary用golang語言如何構(gòu)造這4種類型對應(yīng)的指標(biāo),二是搞清楚修改指標(biāo)值的場景和方式,感興趣的可以了解一下2023-02-02

