幾種獲取請求參數的方式
1.綁定數據
通過將請求參數綁定到一個struct對象的方式獲取數據。這種方式獲取請求參數支持json、xml、k/v鍵值對等多種方式。
下面例子是將請求參數綁定到User struct對象。
// User 結構體定義
type User struct {
Name string `json:"name" form:"name" query:"name"`
Email string `json:"email" form:"email" query:"email"`
}
通過定義struct字段的標簽,定義請求參數和struct字段的關系。
下面對User的Name字段的標簽進行說明。
struct標簽說明:
標簽 | 說明 |
---|---|
json:"name" | 支持post請求,數據格式為json格式,並且字段名為name |
form:"name" | 支持post請求,並且參數名為name |
query:"name" | 支持get請求,並且參數名為name |
提示:你可以根據自己的需要選擇支持的請求方式和數據類型,例如需要支持xml數據格式,可以這樣定義字段標簽: xml:"name"
下面看控制器代碼:
// Handler
func(c echo.Context) (err error) {
u := new(User)
//調用echo.Context的Bind函數將請求參數和User對象進行綁定。
if err = c.Bind(u); err != nil {
return
}
//請求參數綁定成功后 u 對象就保存了請求參數。
//這里直接將請求參數以json格式顯示
//注意:User結構體,字段標簽定義中,json定義的字段名,就是User對象轉換成json格式對應的字段名。
return c.JSON(http.StatusOK, u)
}
2.獲取post請求數據
通過echo.Context對象的FormValue函數可以直接獲取post請求參數.
// Handler
func(c echo.Context) error {
//獲取name參數
name := c.FormValue("name")
//直接輸出name參數
return c.String(http.StatusOK, name)
}
提示:通過FormValue函數獲取參數的值,數據類型都是String類型, 如果需要其他類型的數據,需要自己轉換數據格式。
3.獲取get請求數據
通過echo.Context對象的QueryParam函數可以直接獲取get請求參數.
// Handler
func(c echo.Context) error {
//獲取name參數, 通過QueryParam獲取的參數值也是String類型。
name := c.QueryParam("name")
//直接輸出name參數
return c.String(http.StatusOK, name)
})
4.獲取path路徑參數
通過echo.Context對象的Param獲取,url路徑參數。
//例子: url路由規則為/users/:name , :name為參數。
e.GET("/users/:name", func(c echo.Context) error {
//獲取路徑參數:name的值
name := c.Param("name")
//如果請求url為: /users/xjs 則name的值為xjs
//Param獲取的值也是String類型
return c.String(http.StatusOK, name)
})