Gin框架之參數(shù)綁定的實(shí)現(xiàn)
為了能夠更方便的獲取請(qǐng)求相關(guān)參數(shù),提高開(kāi)發(fā)效率,我們可以基于請(qǐng)求的Content-Type識(shí)別請(qǐng)求數(shù)據(jù)類型并利用反射機(jī)制自動(dòng)提取請(qǐng)求中QueryString、form表單、JSON、XML等參數(shù)到結(jié)構(gòu)體中。 下面的示例代碼演示了.ShouldBind()強(qiáng)大的功能,它能夠基于請(qǐng)求自動(dòng)提取JSON、form表單和QueryString類型的數(shù)據(jù),并把值綁定到指定的結(jié)構(gòu)體對(duì)象。
以下示例分別是對(duì)QueryString、form、json進(jìn)行參數(shù)綁定。
注意:
1、結(jié)構(gòu)體內(nèi)部屬性名大寫

2、加地址符:

代碼:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
type User struct {
Username string `json:"user" form:"userform"`
Password string `json:"pwd" form:"pwdform"`
}
func main() {
r := gin.Default()
var u User
//queryString數(shù)據(jù)綁定
r.GET("/user", func(c *gin.Context) {
//參數(shù)綁定
err := c.ShouldBind(&u)
if err == nil {
c.JSON(http.StatusOK, gin.H{
"user": u.Username,
"pwd": u.Password,
})
}
})
//form表單數(shù)據(jù)綁定
r.POST("/form", func(c *gin.Context) {
//參數(shù)綁定
err := c.ShouldBind(&u)
if err == nil {
c.JSON(http.StatusOK, gin.H{
"user": u.Username,
"pwd": u.Password,
})
}
})
//form表單數(shù)據(jù)綁定
r.POST("/json", func(c *gin.Context) {
//參數(shù)綁定
err := c.ShouldBind(&u)
if err == nil {
c.JSON(http.StatusOK, gin.H{
"user": u.Username,
"pwd": u.Password,
})
}
})
r.Run(":9090")
}
調(diào)試:
運(yùn)行結(jié)果使用postman模擬,分別是:
對(duì)querystring進(jìn)行參數(shù)綁定結(jié)果:

對(duì)form表單進(jìn)行參數(shù)綁定結(jié)果:

對(duì)json進(jìn)行參數(shù)綁定結(jié)果:

到此這篇關(guān)于Gin框架之參數(shù)綁定的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Gin框架 參數(shù)綁定內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang標(biāo)準(zhǔn)庫(kù)syscall詳解(什么是系統(tǒng)調(diào)用)
最近在研究go語(yǔ)言,發(fā)現(xiàn)go語(yǔ)言系統(tǒng)調(diào)用源碼只有調(diào)用函數(shù)的定義,今天通過(guò)本文給大家分享Golang標(biāo)準(zhǔn)庫(kù)syscall詳解及什么是系統(tǒng)調(diào)用,感興趣的朋友一起看看吧2021-05-05
一文幫你搞懂Go面試中常問(wèn)的channel問(wèn)題
channel是Golang面試時(shí)經(jīng)常會(huì)問(wèn)到的問(wèn)題,所以這篇文章為大家整理了channel??嫉囊恍﹩?wèn)題以及回答,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06
Go語(yǔ)言實(shí)現(xiàn)二進(jìn)制與十進(jìn)制互轉(zhuǎn)的示例代碼
這篇文章主要和大家詳細(xì)介紹了Go語(yǔ)言中實(shí)現(xiàn)二進(jìn)制與十進(jìn)制互相轉(zhuǎn)換的示例代碼,文中的代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05
go?time.Sleep睡眠指定時(shí)間實(shí)例詳解(小時(shí)級(jí)到納秒級(jí))
golang的休眠可以使用time包中的sleep,下面這篇文章主要給大家介紹了關(guān)于go?time.Sleep睡眠指定時(shí)間(小時(shí)級(jí)到納秒級(jí))的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11

