本章介绍几种获取请求参数的方式
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/tizi365 则name的值为tizi365
//Param获取的值也是String类型
return c.String(http.StatusOK, name)
})