舉例請求
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")