这里主要整理了 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:表示深入该数组内部继续验证每一个结构体对应的字段。
验证效果演示:
