URL查询参数
(https://juejin.im/search?keyword=tony&type=admin&id=10 )
复制代码
GET 请求
func (c *Context) GetQuery(key string) (string, bool)
func (c *Context) Query(key string) string
func (c *Context) DefaultQuery(key, defaultValue string) string
func (c *Context) GetQueryArray(key string) ([]string, bool)
func (c *Context) QueryArray(key string) []string
r.GET("/user/:id", func(c *gin.Context) {
id,_ := c.GetQuery("keyword")
//id := c.Query("keyword")
//id := c.DefaultQuery("keyword","tomy")
// http://localhost:8080/user?id=10&id=11&id=12
// ids := c.QueryArray("id")
})
复制代码
请求变量在url path中
https://juejin.im/user/:id )
复制代码
注意 GET请求: /user/:id 中的:id是变量。可以变动的部分。 举例子: /user/tom, /user/tony 里面的tom, tony就是:id的不同的变量值。
那么如果在gin中获得呢
r.GET("/user/:id", func(c *gin.Context) {
id, err := c.Params.Get("id")
})
复制代码
数据绑定
type Person struct {
Name string `form:"name"`
Address string `form:"address"`
Birthday time.Time `form:"birthday" time_format:"2006-01-02" time_utc:"1"`
}
func startPage(c *gin.Context) {
var person Person
// If `GET`, only `Form` binding engine (`query`) used.
// 如果是Get,那么接收不到请求中的Post的数据??
// 如果是Post, 首先判断 `content-type` 的类型 `JSON` or `XML`, 然后使用对应的绑定器获取数据.
if c.ShouldBind(&person) == nil {
log.Println(person.Name)
log.Println(person.Address)
log.Println(person.Birthday)
}
c.String(200, "Success")
}
复制代码
实战中一般用json Bind 或者 ShouldBind比较方便。 post 来获取参数。
一下篇将介绍获取到的参数如何验证!
有疑问加站长微信联系(非本文作者)