Gin 系列讲座: Saas系统, Gin+Jwt+casbin RestFul Api 后端一战到底 : 6 一般请求参数绑定获取

stanhangzhou · · 767 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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 来获取参数。

一下篇将介绍获取到的参数如何验证!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

767 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传