获取请求参数
一、带参数的路由:路径中直接加上参数值
e.g. http://127.0.0.1:8080/user/hallen
1.第一种情况:使用占位符: ,必须得指定这个路径
- 路由:engine.GET("/user/:name",Index)
- 如:http://127.0.0.1:8080/user/hallen,这里必须指定name这个路径,不然会找不到
- 获取方式:context.Param(“name”)
2.第二种情况:使用占位符*,可以不用匹配这个路径
- 路由:engine.GET("/user/*name",Index)
- 这里可以指定name这个路径,也可以不用指定
- 如:下面两种都可以访问
- http://127.0.0.1:8080/user/hallen,
- http://127.0.0.1:8080/user,
- 获取方式:context.Param(“name”)
区别:参数前面是使用冒号还是使用通配符,冒号的比如指定路径,通配符的可以不用
代码示例:
func Index(c *gin.Context) {
name := c.Param("name")
c.String(http.StatusOK, "Hello %s", name)
}
// engine.GET("/user/*name",Index)
engine.GET("/user/:name",Index)
二、带参数的路由:路径中使用参数名
1.contxt.Query
-
获取:contxt.Query(“name”)
2.contxt.DefaultQuery
- 传参:http://127.0.0.1:8080/user/?name=hallen
- 获取:contxt.DefaultQuery(“name”,“hallen”)
区别:DefaultQuery比Query多了个默认值,如果没有获取到会使用默认值
3.contxt.QueryArray
-
获取:names := contxt.QueryArray(“name”)
-
数据结构:[1,2,3,4,5]
4.contxt.QueryMap
- 传参:http://127.0.0.1:8080/user?name[1]=hallen1&name[2]=hallen2
- 获取:name_map := contxt.QueryMap(“name”)
- 数据结构:map[1:hallen1 2:hallen2]