天天看點

go的gin架構從請求中擷取參數的方法

前言:

go語言的gin架構go裡面比較好的一個web架構, github的start數超過了18000.可見此架構的可信度

如何擷取請求中的參數

假如有這麼一個請求:

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

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

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

gin的實作:

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")       

假如gin定義的路由路徑為:

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")       

未完, 待續....

部落格中所涉及到的圖檔都有版權,請謹慎使用