日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gin框架获取参数

發布時間:2025/3/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gin框架获取参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、querystring,的是URL中?后面攜帶的參數,例如:/user/search?username=小王子&address=沙河。 獲取請求的querystring參數的方法如下。c.Query

username := c.DefaultQuery("username", "小王子") //username := c.Query("username") address := c.Query("address") //輸出json結果給調用方 c.JSON(http.StatusOK, gin.H{"message": "ok","username": username,"address": address, })

2、獲取form參數,當前端請求的數據通過form表單提交時,例如向/user/search發送一個POST請求,獲取請求數據的方式如下。c.PostForm

username := c.PostForm("username")address := c.PostForm("address")//輸出json結果給調用方c.JSON(http.StatusOK, gin.H{"message": "ok","username": username,"address": address,})

3、獲取json參數,當前端請求的數據通過JSON提交時,例如向/json發送一個POST請求,則獲取請求參數的方式如下。c.GetRawData()

b, _ := c.GetRawData() // 從c.Request.Body讀取請求數據// 定義map或結構體var m map[string]interface{}// 反序列化_ = json.Unmarshal(b, &m)c.JSON(http.StatusOK, m)

4、獲取path參數,請求的參數通過URL路徑傳遞,例如:/user/search/小王子/沙河。 獲取請求URL路徑中的參數的方式如下。c.Param

username := c.Param("username")address := c.Param("address")//輸出json結果給調用方c.JSON(http.StatusOK, gin.H{"message": "ok","username": username,"address": address,})

5、參數綁定,為能夠更方便的獲取請求的相關參數,可以基于請求的Content-Type識別請求數據類型并利用反射機制自動提取請求中QueryString、form表單、JSON、XML,并把值綁定到指定的結構體對象c.showbind

// Binding from JSON type Login struct {User string `form:"user" json:"user" binding:"required"`Password string `form:"password" json:"password" binding:"required"` }func main() {router := gin.Default()// 綁定JSON的示例 ({"user": "q1mi", "password": "123456"})router.POST("/loginJSON", func(c *gin.Context) {var login Loginif err := c.ShouldBind(&login); err == nil {fmt.Printf("login info:%#v\n", login)c.JSON(http.StatusOK, gin.H{"user": login.User,"password": login.Password,})} else {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})}})// 綁定form表單示例 (user=q1mi&password=123456)router.POST("/loginForm", func(c *gin.Context) {var login Login// ShouldBind()會根據請求的Content-Type自行選擇綁定器if err := c.ShouldBind(&login); err == nil {c.JSON(http.StatusOK, gin.H{"user": login.User,"password": login.Password,})} else {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})}})// 綁定QueryString示例 (/loginQuery?user=q1mi&password=123456)router.GET("/loginForm", func(c *gin.Context) {var login Login// ShouldBind()會根據請求的Content-Type自行選擇綁定器if err := c.ShouldBind(&login); err == nil {c.JSON(http.StatusOK, gin.H{"user": login.User,"password": login.Password,})} else {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})}})// Listen and serve on 0.0.0.0:8080router.Run(":8080") }

showbind會按照下面的順序解析請求中的數據完成綁定:

  • 如果是?GET?請求,只使用?Form?綁定引擎(query)。
  • 如果是?POST?請求,首先檢查?content-type?是否為?JSON?或?XML,然后再使用?Form(form-data)。
  • 總結

    以上是生活随笔為你收集整理的Gin框架获取参数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。