一架梯子,一头程序猿,仰望星空!

echo如何处理请求参数


本章介绍几种获取请求参数的方式

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