婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Gin golang web開(kāi)發(fā)模型綁定實(shí)現(xiàn)過(guò)程解析

Gin golang web開(kāi)發(fā)模型綁定實(shí)現(xiàn)過(guò)程解析

熱門(mén)標(biāo)簽:赤峰電銷 江蘇呼叫中心外呼系統(tǒng)有效果嗎 利用地圖標(biāo)注位置 官渡電銷外呼管理系統(tǒng)怎么收費(fèi) 谷歌美發(fā)店地圖標(biāo)注 杭州人工智能電銷機(jī)器人費(fèi)用 貴州電話智能外呼系統(tǒng) 400開(kāi)頭電話怎樣申請(qǐng) 地圖區(qū)域圖標(biāo)注后導(dǎo)出

我們了解到gin可用通過(guò)類似DefaultQuery或DefaultPostForm等方法獲取到前端提交過(guò)來(lái)的參數(shù)。參數(shù)不多的情況下也很好用,但是想想看,如果接口有很多個(gè)參數(shù)的時(shí)候再用這種方法就要調(diào)用很多次獲取參數(shù)的方法,本文將介紹一種新的接收參數(shù)的方法來(lái)解決這個(gè)問(wèn)題:模型綁定。

gin中的模型綁定可以理解為:把請(qǐng)求的參數(shù)映射為一個(gè)具體的類型。gin支持JSON,XML,YAML和表單參數(shù)等多種參數(shù)格式,只需要在對(duì)應(yīng)的字段上聲明標(biāo)簽。

綁定表單或者查詢字符串

type Person struct {
	Name  string `form:"name"`
	Address string `form:"address"`
}

func startPage(c *gin.Context) {
	var person Person
	if c.ShouldBindQuery(person) == nil {
		log.Println(person.Name)
		log.Println(person.Address)
	}
	c.String(200, "Success")
}

在結(jié)構(gòu)體Name字段聲明form標(biāo)簽,并調(diào)用ShouldBindQuery方法,gin會(huì)為我們綁定查詢字符串中的name和address兩個(gè)參數(shù)。注意雖然我們聲明了form標(biāo)簽,ShouldBindQuery只綁定查詢字符串中的參數(shù)。

如果你想綁定表單中的參數(shù)的話結(jié)構(gòu)體不用改變,需要把ShouldBindQuery方更改為ShouldBind方法。ShouldBind方法會(huì)區(qū)分GET和POST請(qǐng)求,如果是GET請(qǐng)求綁定查詢字符串中的參數(shù),如果是POST請(qǐng)求綁定表單參數(shù)中的內(nèi)容,但是不能同時(shí)綁定兩種參數(shù)。

綁定json參數(shù)

type Person struct {
	Name  string `json:"name"`
	Address string `json:"address"`
}

func startPage(c *gin.Context) {
	var person Person
	if c.ShouldBind(person) == nil {
		log.Println(person.Name)
		log.Println(person.Address)
	}
	c.String(200, "Success")
}

json是一種常用的數(shù)據(jù)交換格式,尤其是在和web前端頁(yè)面交互的時(shí)候,似乎已經(jīng)成為了一種事實(shí)標(biāo)準(zhǔn)。gin綁定json格式數(shù)據(jù)方法很簡(jiǎn)單,只需要設(shè)置字段的標(biāo)簽為json并且調(diào)用ShouldBind方法。

其他類型參數(shù)綁定

路由參數(shù)在綁定時(shí)設(shè)置標(biāo)簽為uri,并調(diào)用ShouldBindUri方法。

type Person struct {
	Id  string `uri:"id"`
}

func startPage(c *gin.Context) {
	var person Person
	if c.ShouldBindUri(person) == nil {
		log.Println(person.Id)
	}
	c.String(200, "Success")
}

綁定在HTTP Header中的參數(shù),字段的標(biāo)簽設(shè)置為header,調(diào)用方法為ShouldBindHeader。

還有不太常用的數(shù)組參數(shù)是字段標(biāo)簽設(shè)置為form:"colors[]",結(jié)構(gòu)體例子如下:

type myForm struct {
  Colors []string `form:"colors[]"`
}

文件上傳這種場(chǎng)景我很少用模型綁定的方式獲取參數(shù),在gin中對(duì)于這種場(chǎng)景也提供了模型綁定支持。

type ProfileForm struct {
	Name  string        `form:"name"`
	Avatar *multipart.FileHeader `form:"avatar"`
	// Avatars []*multipart.FileHeader `form:"avatar"` 多文件上傳
}

func main() {
	router := gin.Default()
	router.POST("/profile", func(c *gin.Context) {
		var form ProfileForm
		if err := c.ShouldBind(form); err != nil {
			c.String(http.StatusBadRequest, "bad request")
			return
		}

		err := c.SaveUploadedFile(form.Avatar, form.Avatar.Filename)
		if err != nil {
			c.String(http.StatusInternalServerError, "unknown error")
			return
		}

		c.String(http.StatusOK, "ok")
	})
	router.Run(":8080")
}

多種類型的模型綁定

如果我們有一個(gè)UpdateUser接口,PUT /user/:id,參數(shù)是{"nickname": "nickname...","mobile": "13322323232"}。代碼如下:

type ProfileForm struct {
	Id    int  `uri:"id"`
	Nickname string `json:"nickname"` // 昵稱
	Mobile  string `json:"mobile"`  // 手機(jī)號(hào)
}

func main() {
	router := gin.Default()
	router.GET("/user/:id", func(c *gin.Context) {
		var form ProfileForm
		if err := c.ShouldBindUri(form); err != nil {
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}

		if err := c.ShouldBindJSON(form); err != nil {
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}

		c.String(http.StatusOK, "ok")
	})
	router.Run(":8080")
}

代碼里調(diào)用了兩次bind方法才獲取到全部的參數(shù)。和gin社區(qū)溝通之后發(fā)現(xiàn)目前還不能調(diào)用一個(gè)方法同時(shí)綁定多個(gè)參數(shù)來(lái)源,當(dāng)前gin版本為1.6.x,不知道未來(lái)會(huì)不會(huì)提供這種功能。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • nodejs個(gè)人博客開(kāi)發(fā)第四步 數(shù)據(jù)模型
  • 詳解iOS應(yīng)用UI開(kāi)發(fā)中的九宮格坐標(biāo)計(jì)算與字典轉(zhuǎn)換模型
  • iOS中的應(yīng)用啟動(dòng)原理以及嵌套模型開(kāi)發(fā)示例詳解
  • PHP YII框架開(kāi)發(fā)小技巧之模型(models)中rules自定義驗(yàn)證規(guī)則
  • 軟件開(kāi)發(fā)七大過(guò)程模型

標(biāo)簽:武漢 宜春 泰安 鷹潭 黔西 保定 松原 河池

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Gin golang web開(kāi)發(fā)模型綁定實(shí)現(xiàn)過(guò)程解析》,本文關(guān)鍵詞  Gin,golang,web,開(kāi)發(fā),模型,綁定,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Gin golang web開(kāi)發(fā)模型綁定實(shí)現(xiàn)過(guò)程解析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Gin golang web開(kāi)發(fā)模型綁定實(shí)現(xiàn)過(guò)程解析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲精品高清在线观看| 亚洲欧洲日韩女同| 国产精品污网站| 一区二区三区波多野结衣在线观看 | 北条麻妃一区二区三区| 欧美精品视频www在线观看 | 欧美三片在线视频观看| 欧美韩国日本不卡| 美美哒免费高清在线观看视频一区二区| 成人免费看片app下载| 日韩欧美国产电影| 亚洲综合丝袜美腿| 成人美女视频在线看| 国产精品乱码一区二三区小蝌蚪| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 91偷拍与自偷拍精品| 久久精品一区二区三区av| 日韩av中文字幕一区二区三区| 精品少妇一区二区三区免费观看| 中文一区二区在线观看| 99精品桃花视频在线观看| 亚洲二区视频在线| 欧美视频中文字幕| 一区二区三区中文字幕在线观看| 欧美日韩国产美| 亚洲自拍欧美精品| www国产精品av| 久久国产综合精品| 久久综合久久久久88| av在线不卡网| 水野朝阳av一区二区三区| 欧美精品一级二级三级| 国产麻豆91精品| 2017欧美狠狠色| 日本道在线观看一区二区| 亚洲一区免费视频| 久久天堂av综合合色蜜桃网| 91福利精品第一导航| 国产一区三区三区| 亚洲第一二三四区| 91精品欧美一区二区三区综合在 | 欧美一级欧美三级| 九色|91porny| 精品人伦一区二区色婷婷| 91在线一区二区| 国产一区91精品张津瑜| 午夜欧美2019年伦理| 91精品国产品国语在线不卡| av不卡在线观看| 国产一区二区调教| 青草国产精品久久久久久| 日韩欧美国产一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲午夜电影在线| 中文字幕亚洲欧美在线不卡| 久久青草欧美一区二区三区| 99精品欧美一区二区三区小说| 蜜桃精品视频在线| 石原莉奈在线亚洲三区| 亚洲精品国产第一综合99久久| 中文字幕av不卡| 久久婷婷一区二区三区| 欧美xxxxxxxx| 欧美一级二级在线观看| www.成人在线| 国产成人精品www牛牛影视| 亚洲美女淫视频| 精品裸体舞一区二区三区| 在线成人av网站| 91.xcao| 制服丝袜日韩国产| 欧美喷潮久久久xxxxx| 欧美久久久久久久久| 欧美日韩国产a| 欧美在线观看18| 国产在线不卡一卡二卡三卡四卡| 久久成人麻豆午夜电影| 久久国产尿小便嘘嘘| 韩国av一区二区三区四区| 亚洲自拍偷拍av| 亚洲成av人片| 日韩精品一级中文字幕精品视频免费观看 | 亚洲综合丝袜美腿| 亚洲一二三四久久| 丝袜美腿亚洲一区二区图片| 日韩 欧美一区二区三区| 免费人成网站在线观看欧美高清| 蜜臀av一区二区三区| 久久国产精品99久久人人澡| 国产精品自拍一区| 日韩在线a电影| 日本中文在线一区| 另类小说色综合网站| 国产精品白丝av| 国产91精品精华液一区二区三区| 偷窥少妇高潮呻吟av久久免费| 丝袜诱惑亚洲看片| 国产一区二区免费视频| 不卡视频一二三四| 国产成人精品免费网站| jlzzjlzz亚洲日本少妇| 欧美性三三影院| 欧美刺激午夜性久久久久久久| 国产偷国产偷亚洲高清人白洁| 国产精品污www在线观看| 亚洲午夜久久久久久久久电影院| 免费成人你懂的| 顶级嫩模精品视频在线看| 欧美影片第一页| 日韩精品在线看片z| 亚洲欧洲色图综合| 免播放器亚洲一区| 成人一级片网址| 欧美日韩专区在线| 久久综合丝袜日本网| 亚洲精品中文字幕在线观看| 蜜桃久久av一区| av中文字幕不卡| 日韩一区二区三区高清免费看看| 国产精品三级av在线播放| 三级影片在线观看欧美日韩一区二区| 国产在线精品免费| 欧美色视频在线| 欧美国产激情二区三区| 五月婷婷激情综合网| 成人国产精品免费| 欧美成人高清电影在线| 一区二区三区四区精品在线视频| 久久99最新地址| 欧美吞精做爰啪啪高潮| 欧美激情中文不卡| 麻豆一区二区三区| 在线观看亚洲a| 欧美国产日本视频| 久久99国产精品麻豆| 欧美日韩国产影片| 亚洲欧美日韩精品久久久久| 激情六月婷婷综合| 日韩欧美国产精品| 午夜精品一区二区三区电影天堂 | 91福利小视频| 中文字幕免费不卡在线| 经典一区二区三区| 91精品国产一区二区人妖| 一区二区理论电影在线观看| 不卡高清视频专区| 欧美激情一区二区三区四区 | 国产xxx精品视频大全| 欧美一级视频精品观看| 亚洲成人在线免费| 欧美亚洲自拍偷拍| 亚洲激情六月丁香| 色诱视频网站一区| 17c精品麻豆一区二区免费| 顶级嫩模精品视频在线看| 久久亚洲二区三区| 韩国理伦片一区二区三区在线播放 | 亚洲日本在线天堂| 首页亚洲欧美制服丝腿| 欧美色综合久久| 一区二区三区毛片| 欧美在线一区二区| 亚洲一区二区三区免费视频| 色视频成人在线观看免| ㊣最新国产の精品bt伙计久久| 成人18精品视频| 国产精品不卡一区二区三区| 日韩精品高清不卡| 欧美一三区三区四区免费在线看| 亚洲电影一级片| 精品视频一区二区不卡| 视频一区在线播放| 欧美一激情一区二区三区| 麻豆视频一区二区| 国产婷婷精品av在线| 成人国产亚洲欧美成人综合网| 中文字幕一区日韩精品欧美| 色视频成人在线观看免| 五月综合激情婷婷六月色窝| 91精品国产欧美一区二区18| 久久精品国产精品亚洲红杏| 久久久久9999亚洲精品| 99久久伊人精品| 亚洲午夜在线电影| 精品日韩一区二区三区| 国产999精品久久| 综合欧美亚洲日本| 欧美日韩国产高清一区二区| 日韩不卡一区二区| 国产亚洲制服色| 色又黄又爽网站www久久| 天堂va蜜桃一区二区三区漫画版| 精品国产乱码久久久久久影片| 日韩专区在线视频| 久久综合色一综合色88| voyeur盗摄精品| 日韩一区精品视频| 国产精品久久久久婷婷| 欧美三片在线视频观看| 国产传媒欧美日韩成人|