Gin框架之參數(shù)綁定的實現(xiàn)
為了能夠更方便的獲取請求相關(guān)參數(shù),提高開發(fā)效率,我們可以基于請求的Content-Type識別請求數(shù)據(jù)類型并利用反射機(jī)制自動提取請求中QueryString、form表單、JSON、XML等參數(shù)到結(jié)構(gòu)體中。 下面的示例代碼演示了.ShouldBind()強(qiáng)大的功能,它能夠基于請求自動提取JSON、form表單和QueryString類型的數(shù)據(jù),并把值綁定到指定的結(jié)構(gòu)體對象。
以下示例分別是對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)試:
運行結(jié)果使用postman模擬,分別是:
對querystring進(jìn)行參數(shù)綁定結(jié)果:

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

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

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

