1. 程式人生 > 實用技巧 >從gin的請求中獲取引數的各種方法

從gin的請求中獲取引數的各種方法

舉例請求

POST   /post/test?id=1234&page=1  HTTP/1.1

請求頭:  Content-Type: application/x-www-form-urlencoded

form表單引數:  name=manu&message=this_is_great

實現

id := c.Query("id") //查詢請求URL後面的引數
page := c.DefaultQuery("page", "0") //查詢請求URL後面的引數,如果沒有填寫預設值
name := c.PostForm("name") //從表單中查詢引數

//POST和PUT主體引數優先於URL查詢字串值。
name := c.Request.FormValue("name") 

//返回POST並放置body引數,URL查詢引數被忽略
name := c.Request.PostFormValue("name")

//從表單中查詢引數,如果沒有填寫預設值  
message := c.DefaultPostForm("message", "aa")

請求的定義

router.POST("/post/:uuid", func(c *gin.Context){
    ...
}

獲取uuid

uuid := c.Param("uuid") //取得URL中引數

其他引數的獲取

s, _ := c.Get("current_manager") //從使用者上下文讀取值      

var u User

//從http.Request中讀取值到User結構體中,手動確定繫結型別binding.Form
err1 := c.BindWith(&u, binding.Form) 

//從http.Request中讀取值到User結構體中,根據請求方法型別和請求內容格式型別自動確定繫結型別
err2 := c.Bind(&u)

//從session中讀取值
//使用者上下文和session生命週期不同,每一次請求會生成一個對應的上下文,一次http請求結束,該次請求的上下文結束,一般來說session(會話)會留存一段時間
//session(會話)中一般儲存使用者登入狀態等資訊,context(上下文)主要用於在一次http請求中,在中介軟體(流)中進行資訊傳遞
user := sessions.Default(c).get("user")