Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
页面加载耗时 0.00 毫秒·物理内存 135.0MB ·虚拟内存 1372.6MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
本章介绍四种获取请求参数的方式:绑定 struct 数据、获取 Get 参数、获取 Post 参数以及获取路径参数。
通过将请求参数绑定到一个 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)
}
通过 echo.Context 对象的 QueryParam 函数可以直接获取 Get 请求参数。
// Handler
func(c echo.Context) error {
// 获取name参数, 通过QueryParam获取的参数值也是String类型。
name := c.QueryParam("name")
// 直接输出name参数
return c.String(http.StatusOK, name)
})
通过 echo.Context 对象的 FormValue 函数可以直接获取 Post 请求参数。
// Handler
func(c echo.Context) error {
// 获取name参数
name := c.FormValue("name")
// 直接输出name参数
return c.String(http.StatusOK, name)
}
通过 FormValue 函数获取参数的值,数据类型都是 String 类型, 如果需要其他类型的数据,需要自己转换数据格式。
通过 echo.Context 对象的 Param 获取 url 路径参数。
//例子: url 路由规则为 /users/:name , :name 为参数。
e.GET("/users/:name", func(c echo.Context) error {
// 获取路径参数:name的值
name := c.Param("name")
// 如果请求url为: /users/aizws 则 name 的值为 aizws
// Param 获取的值也是 String类型
return c.String(http.StatusOK, name)
})
Go Echo框架支持以字符串、json、xml、文件等格式返回请求结果,响应请求。在 Go Echo框架中,使用 echo.Context 上下文对象来支持多种返回处理结果。包括:以字符串方式响应请求、以 json 格式响应请求、以 xml 格式响应请求、以文件格式响应请求、设置 http 响应头(设置 Header)。