日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Gin框架之參數(shù)綁定的實(shí)現(xiàn)_Golang

作者:wind-zhou ? 更新時(shí)間: 2021-12-06 編程語(yǔ)言

為了能夠更方便的獲取請(qǐng)求相關(guān)參數(shù),提高開(kāi)發(fā)效率,我們可以基于請(qǐng)求的Content-Type識(shí)別請(qǐng)求數(shù)據(jù)類型并利用反射機(jī)制自動(dòng)提取請(qǐng)求中QueryStringform表單JSONXML等參數(shù)到結(jié)構(gòu)體中。 下面的示例代碼演示了.ShouldBind()強(qiáng)大的功能,它能夠基于請(qǐng)求自動(dòng)提取JSONform表單QueryString類型的數(shù)據(jù),并把值綁定到指定的結(jié)構(gòu)體對(duì)象。

以下示例分別是對(duì)QueryString、form、json進(jìn)行參數(shù)綁定。

注意:

1、結(jié)構(gòu)體內(nèi)部屬性名大寫(xiě)

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é)果:

原文鏈接:https://www.cnblogs.com/wind-zhou/p/13044729.html

欄目分類
最近更新