golang常用库:gorilla/mux-http路由库使用
golang常用库:配置文件解析库-viper使用
golang常用库:操作数据库的orm框架-gorm基本使用
golang常用库:字段参数验证库-validator使用
一、背景
在平常开发中,特别是在web应用开发中,为了验证输入字段的合法性,都会做一些验证操作。比如对用户提交的表单字段进行验证,或者对请求的API接口字段进行验证,验证字段的合法性,保证输入字段值的安全,防止用户的恶意请求。
一般的做法是用正则表达式,一个字段一个字段的进行验证。一个一个字段验证的话,写起来比较繁琐。那有没更好的方法,进行字段的合法性验证?有, 这就是下面要介绍的 validator 这个验证组件。
代码地址:
https://github.com/go-playground/validator
文档地址:
https://github.com/go-playground/validator/blob/master/README.md
二、功能介绍
这个验证包 github.com/go-playground/validator 验证功能非常多。
标记之间特殊符号说明
逗号( , ):把多个验证标记隔开。注意:隔开逗号之间不能有空格, validate:“lt=0,gt=100”,逗号那里不能有空格,否则panic
横线( - ):跳过该字段不验证
竖线( | ):使用多个验证标记,但是只需满足其中一个即可
required:表示该字段值必输设置,且不能为默认值
omitempty:如果字段未设置,则忽略它
范围比较验证
doc: https://github.com/go-playground/validator/blob/master/README.md#comparisons
范围验证: 切片、数组和map、字符串,验证其长度;数值,验证大小范围
lte:小于等于参数值,validate:“lte=3” (小于等于3)
gte:大于等于参数值,validate:“lte=0,gte=120” (大于等于0小于等于120)
lt:小于参数值,validate:“lt=3” (小于3)
gt:大于参数值,validate:“lt=0,gt=120” (大于0小于120)
len:等于参数值,validate:“len=2”
max:大于等于参数值,validate:“max=2” (大于等于2)
min:小于等于参数值,validate:“min=2,max=10” (大于等于2小于等于10)
ne:不等于,validate:“ne=2” (不等于2)
oneof:只能是列举出的值其中一个,这些值必须是数值或字符串,以空格分隔,如果字符串中有空格,将字符串用单引号包围,validate:“oneof=red green”
举例:
// 统计id
ID string `json:"id"`
// 日期统计类型(day:日 week:周 month:月)
DateType string `json:"date_type" validate:"required,max=6"`
// 范围(当日:d 前一日:bd 当周:w 前一周:bw 当月:m 前一月:bm 向前:fd 向后:back)
Range string `json:"range" validate:"required,max=5"`
// 间隔
Interval int `json:"interval" validate:"required"`
// 月统计类型 (固定:1 相对:2)
MonthType int `json:"month_type" validate:"required,oneof=1 2"`
// 排序
Sort int `json:"sort" validate:"require"`
}
原文:https://blog.youkuaiyun.com/qq_31389153/article/details/127865165