最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go Gin安裝及初始化操作示例

 更新時間:2022年04月15日 12:18:14   作者:Jeff的技術(shù)棧  
這篇文章主要介紹了gin安裝及初始化,修改啟動端口,get/post?請求參數(shù),模型綁定shouldbind,自定義驗證器/表單驗證,等操作步驟,有需要的朋友可以借鑒參考下

第一步初始化

1.新建文件夾(項目名)

2.終端進入該項目,敲 go mod init gin-class 產(chǎn)生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取參數(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值,沒有就用默認值

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值,沒有就用默認值

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安裝及初始化操作示例的詳細內(nèi)容,更多關(guān)于gin安裝及初始化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang雪花算法實現(xiàn)64位的ID的示例代碼

    golang雪花算法實現(xiàn)64位的ID的示例代碼

    本文展示了使用Go語言實現(xiàn)雪花算法生成64位ID的示例代碼,雪花算法通過當前時間戳、工作節(jié)點ID、數(shù)據(jù)中心ID和序列號生成唯一的64位ID,確保在分布式系統(tǒng)中的唯一性和時間順序性,感興趣的可以了解一下
    2024-09-09
  • Go語言高效編程的3個技巧總結(jié)

    Go語言高效編程的3個技巧總結(jié)

    Go語言是一種開源編程語言,可輕松構(gòu)建簡單、可靠且高效的軟件,下面這篇文章主要給大家分享介紹了關(guān)于Go語言高效編程的3個技巧,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • golang實現(xiàn)頁面靜態(tài)化操作的示例代碼

    golang實現(xiàn)頁面靜態(tài)化操作的示例代碼

    這篇文章主要介紹了golang實現(xiàn)頁面靜態(tài)化操作的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • golang監(jiān)聽ip數(shù)據(jù)包的實現(xiàn)步驟(golang純享版)

    golang監(jiān)聽ip數(shù)據(jù)包的實現(xiàn)步驟(golang純享版)

    這篇文章主要給大家介紹了golang監(jiān)聽ip數(shù)據(jù)包的實現(xiàn)步驟,本文以ip4 作為案例進行包抓取示范,ip6抓取與ip4方式異曲同工,可自行舉一反三得出,文中通過圖文結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • Golang使用CGO與Plugin技術(shù)運行加載C動態(tài)庫

    Golang使用CGO與Plugin技術(shù)運行加載C動態(tài)庫

    這篇文章主要介紹了Golang使用CGO與Plugin技術(shù)運行加載C動態(tài)庫,Golang?程序在運行時加載C動態(tài)庫的技術(shù),跳過了Golang項目編譯階段需要鏈接C動態(tài)庫的過程,提高了Golang項目開發(fā)部署的靈活性
    2022-07-07
  • Windows下Goland的環(huán)境搭建過程詳解

    Windows下Goland的環(huán)境搭建過程詳解

    這篇文章主要介紹了Windows下Goland的環(huán)境搭建過程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Go語言程序開發(fā)gRPC服務

    Go語言程序開發(fā)gRPC服務

    這篇文章主要為大家介紹了Go語言程序開發(fā)gRPC服務,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 源碼分析Go語言中g(shù)ofmt實現(xiàn)原理

    源碼分析Go語言中g(shù)ofmt實現(xiàn)原理

    gofmt?是?Go?語言官方提供的一個工具,用于自動格式化?Go?源代碼,使其符合?Go?語言的官方編碼風格,本文給大家源碼詳細分析了Go語言中g(shù)ofmt實現(xiàn)原理,并通過圖文和代碼講解的非常詳細,需要的朋友可以參考下
    2024-03-03
  • 一文帶你玩轉(zhuǎn)Golang Prometheus Eexporter開發(fā)

    一文帶你玩轉(zhuǎn)Golang Prometheus Eexporter開發(fā)

    本文分兩大塊,一是搞清楚prometheus四種類型的指標Counter,Gauge,Histogram,Summary用golang語言如何構(gòu)造這4種類型對應的指標,二是搞清楚修改指標值的場景和方式,感興趣的可以了解一下
    2023-02-02
  • 手把手帶你走進Go語言之循環(huán)語句

    手把手帶你走進Go語言之循環(huán)語句

    在不少實際問題中有許多具有規(guī)律性的重復操作,因此在程序中就需要重復執(zhí)行某些語句。一組被重復執(zhí)行的語句稱之為循環(huán)體,能否繼續(xù)重復,決定循環(huán)的終止條件,本文給大家介紹的非常詳細,跟著小編往下看吧
    2021-09-09

最新評論

西城区| 岳普湖县| 延吉市| 类乌齐县| 佳木斯市| 正宁县| 阜阳市| 海兴县| 灌阳县| 白沙| 阜南县| 资兴市| 如皋市| 岳阳市| 汽车| 水富县| 财经| 黄山市| 扎囊县| 衢州市| 云安县| 四会市| 河北省| 庆元县| 自贡市| 崇左市| 临颍县| 宜宾市| 凤翔县| 长治市| 睢宁县| 灯塔市| 全椒县| 香港| 江陵县| 赣榆县| 泽普县| 兴海县| 容城县| 满城县| 西藏|