这里主要整理了 gin 常用的表单参数验证语法,方便开发者快速查询最常用的语法。
gin的表单参数验证语法引用了第三方包:https://github.com/go-playground/validator
1.基本语法示例,我们以用户注册的结构体为例进行示范说明
type Register struct {
UserName string `form:"user_name" json:"user_name" binding:"required,min=1"`
Pass string `form:"pass" json:"pass" binding:"required,min=6,max=20"`
Phone string `form:"phone" json:"phone"`
CardNo string `form:"card_no" json:"card_no"`
}
在以上结构体中:form
:表示验证 form 表单提交的字段。json
:表示通过 json 方式(postman中就是 raw 方式,本质仍然是 application/json 编码方式)提交的数据字段。binding
:任何需要验证的字段首先需要设置 binding 标签,然后指定语法。
注意:在 ginskeleton 中,json 标签是必须都要指定的,因为 ginskeleton 依赖于 json 标签后续做了参数绑定到上下文的功能,form 标签只有表单参数以 form-data 方式提交时是必须的。
常用的验证语法清单:
// 给出一些最常用的验证规则:
//required 必填;
//len=11 长度=11;
//min=3 如果是数字,验证的是数据范围,最小值为3,如果是文本,验证的是最小长度为3,
//max=6 如果是数字,验证的是数字最大值为6,如果是文本,验证的是最大长度为6
// mail 验证邮箱
//gt=3 对于文本就是长度>=3
//lt=6 对于文本就是长度<=6
// one of= 1 2 参数必须是其中之一,对于int系列类型、string 类型使用,float系列类型不适用,会报错
// eqfield 等于另一个字段,常用语注册账号时,password 字段和 re_password 字段一致性校验
2.复杂表单参数验证,主要是结构体嵌套结构体方式(客户端往往以 raw 、application/json 方式提交)
type Demo struct {
No int `form:"no" json:"no" binding:"required"`
Title string `form:"title" json:"title" binding:"required"`
List []List `form:"artitle_list" json:"artitle_list" binding:"required,min=2,dive"`
}
// 以下结构体被嵌套
type List struct {
SubTitle string `form:"sub_title" json:"sub_title" binding:"required"`
Remark string `json:"remark" binding:"required"`
}
在以上结构体中我们解释几个关键点:List
:对应的 min 表示该数组至少有2个成员结构体(对象)dive
:表示深入该数组内部继续验证每一个结构体对应的字段。
验证效果演示: