Skip to content

参数获取


说明

在ctx中,提供了多种方法来获取HTTP请求参数,以便适应不同的应用场景。除了 BindStructValidate() 自带验证,其他方法都不带参数验证。

获取GET请求参数 ctx.GetQuery()

  • @param key
// 获取URL中参数值
name := ctx.GetQuery("name")
// 获取URL中参数值
name := ctx.GetQuery("name")

获取GET请求参数,可设置默认值 ctx.GetDefaultQuery()

  • @param key
  • @param value 默认值
// 获取URL中参数值
name := ctx.GetDefaultQuery("name", "张三")
// 获取URL中参数值
name := ctx.GetDefaultQuery("name", "张三")

获取POST请求参数 ctx.PostForm()

  • @param key
  • @param defaultFormMaxMemory 表单最大容量,默认不传是32M
// 获取POST请求参数,包括json,form-data,x-www-form-urlencoded的方式
// 返回的是gjson.Result类型,需要自行转换类型
name := ctx.PostForm("name").String()
age := ctx.PostForm("age").Int()
// 获取POST请求参数,包括json,form-data,x-www-form-urlencoded的方式
// 返回的是gjson.Result类型,需要自行转换类型
name := ctx.PostForm("name").String()
age := ctx.PostForm("age").Int()

获取POST请求参数,可设置默认值 ctx.PostDefaultForm()

  • @param key
  • @param value 默认值
  • @param defaultFormMaxMemory 表单最大容量,默认不传是32M
// 获取POST请求参数,包括json,form-data,x-www-form-urlencoded的方式
// 返回的是gjson.Result类型,需要自行转换类型
name := ctx.PostDefaultForm("name", "张三").String()
age := ctx.PostDefaultForm("age", 18).Int()
// 获取POST请求参数,包括json,form-data,x-www-form-urlencoded的方式
// 返回的是gjson.Result类型,需要自行转换类型
name := ctx.PostDefaultForm("name", "张三").String()
age := ctx.PostDefaultForm("age", 18).Int()

获取单个文件 ctx.FormFile()

  • @param key
  • @param defaultFormMaxMemory 表单最大容量,默认不传是32M
// 返回的是*multipart.FileHeader类型
file := ctx.FormFile("file")
// 返回的是*multipart.FileHeader类型
file := ctx.FormFile("file")

获取多个文件 ctx.FormFiles()

  • @param key
  • @param defaultFormMaxMemory 表单最大容量,默认不传是32M
// 返回的是[]*multipart.FileHeader类型
files := ctx.FormFiles("files")
// 返回的是[]*multipart.FileHeader类型
files := ctx.FormFiles("files")

获取多个文件 ctx.Download()

  • @param fileName 文件名
// 会以Content-Disposition的方式使前端下载文件
ctx.Download("thinkgo.png")
// 会以Content-Disposition的方式使前端下载文件
ctx.Download("thinkgo.png")

数据流转发 ctx.Stream()

  • @param data io.Reader
// 以text/event-stream的方式发送给前端
ctx.Stream(data)
// 以text/event-stream的方式发送给前端
ctx.Stream(data)

获取IP ctx.ClientIP()

ctx.ClientIP()
ctx.ClientIP()

结构体参数映射,具有参数验证功能 ctx.BindStructValidate()

  • @param req 入参的结构体
  • @param defaultFormMaxMemory 表单最大容量,默认不传是32M
type EditUserReq struct {
	Id int `p:"id" v:"required"`
}

var req api.EditUserReq
ctx.BindStructValidate(&req)
type EditUserReq struct {
	Id int `p:"id" v:"required"`
}

var req api.EditUserReq
ctx.BindStructValidate(&req)

会校验结构体上的v标签,验证不通过会被全局异常处理中间件接管,具体规则可以查看 验证规则

备案号:冀ICP备20015584号-5