校验规则
完整的校验规则可参考https://godoc.org/github.com/go-playground/validator,下面分享常用的校验规则规则:
-
数字值限制
注:如果限制之间存在冲突,如
eq=10,ne=10
,则会根据先后顺序,后面的会覆盖前面的定义,以后面定义的为准;校验内容为eq=10,ne=10
,只会生效ne=10
,如果存在冲突,所有校验规则均符合此规律。- 限制范围
max=10 # 最大值为10,即小于等于10 min=10 # 最小值为10,即大于等于10 gt=10 # 大于 10 gte=10 # 大于等于10 lt=10 # 小于10 lte=10 # 小于等于10
- 限制值
eq=10 # 等于10 ne=10 # 不等于10 oneof=1 2 3 # 值只能是1、2 或 3 len=3 # 限制位数为3位数
- 限制范围
-
字符串长度限制
-
限制长度范围
max=10 # 最大长度为10 min=10 # 最小长度为10 gt=10 # 长度大于10 lt=10 # 长度小于10 gte=10 # 长度大于等于10 let=10 # 长度小于等于10
-
限制值内容
eq=aaa # 值为aaa ne=aaa # 值不能为aaa oneof=a b c # 枚举,只能为a、b 或 c len=3 # 字符长度为3
-
-
存在性校验
注:这里需要特别注意的是,这里是否存在是根据0值与非0值判断的,如果字段中传了对应的0值,也会被认为是不存在的
-
必选
required # 必须
-
可选
omitempty,xxx=xxx # 可选,如果存在,则继续向后校验规则xxx=xxx,如果不存在,则xxx=xxx不生效,但是如果omitempty之前存在校验规则,则前面的校验规则还是生效的,如 gte=-1,omitempty,len=3,则gte=-1规则始终生效,而len=3只有在值不为0时生效。
-
关联校验
required_with=AAA # 当AAA存在时,此字段也必须存在 required_with_all=AAA BBB CCC # 当AAA BBB CCC 都存在时,此字段必须存在 required_without=AAA # 当AAA不存在时,此字段必须存在 required_without_all=
-