参数获取
说明
在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标签,验证不通过会被全局异常处理中间件接管,具体规则可以查看 验证规则