validator参数校验
validator参数校验
官网:https://pkg.go.dev/github.com/go-playground/validator#section-readme
type Req struct {
Sn string `json:"sn" binding:"required"`
}
email:邮箱验证 // 这将验证字符串值是否包含有效的电子邮件。
eg:binding:"email"
required:必填 // 对于数字,确保值不为零。对于字符串,确保值不是“”。对于切片、映射、指针、接口、通道和函数,确保值不为零。
eg:binding:"required"
required_with:必填 // 对于数字,不为空就行。对于字符串,确保值不是“”,对于切片、映射、指针、接口、通道和函数,确保值不为零。
eg:binding:"required_with"
optional:选填
eg: PageSize int `json:"limit,gte=0,lte=10,optional"` //页大小
Page int `json:"page,gte=0,optional"` //翻页
len:长度 //对于字符串,它会检查字符串长度是否恰好是该字符数。对于切片、数组和映射,验证项目数。
eg:binding:"len=10"
max:最大值 // 确保该值小于或等于给定的参数。对于字符串,它会检查字符串长度是否最多为该字符数。对于切片、数组和映射,验证项目数。
eg:binding:"max=10"
min:最小值 //确保该值大于或等于给定的参数。对于字符串,它会检查字符串长度是否至少为该字符数。对于切片、数组和映射,验证项目数。
eg:binding:"min=10"
eq:等于(=) //对于字符串和数字,eq 将确保值等于给定的参数。对于切片、数组和映射,验证项目数。
gt:大于(>)
lt:小于(<)
gte:大于等于(>=)
lte:小于等于(=<)
ne:不等与(!=)
eg:binding:"eq=10"
eg:binding:"gt=10"
oneof:之一 //对于字符串、整数和 uint,oneof 将确保该值是参数中的值之一。该参数应该是由空格分隔的值列表。值可以是字符串或数字
eg:binding:"oneof=1 3 5 7"
eqfield:等于另一个字段 //通常重复密码校验
eg:type user struct {
Password string `json:"password" binding:"required"`
RePassword string `json:"re_password" binding:"required,eqfield=Password"`
}
nefield:不等于另一个字段 //这将根据结构内或传入的字段中的另一个字段值验证字段值。
gtfield:大于另一个字段
gtefield:大于等于另一个字段
ltfield:小于另一个字段
ltefield:小于等于另一个字段
unique:唯一 //对于数组和切片,唯一的将确保没有重复。对于地图,唯一性将确保没有重复值。对于结构切片,unique 将确保通过参数指定的结构字段中没有重复值。
eg:binding:"unique"
alphanum:字母数字 //这验证字符串值仅包含 ASCII 字母数字字符
eg:binding:"alphanum"
options:枚举值中选择
eg: Status string `json:"status,options=close|open"`
alphaunicode: unicode字母字符//这验证字符串值仅包含unicode字母字符
eg:binding:"alphaunicode"
alphanumunicode:unicode 字母数字字符 //这验证字符串值仅包含 unicode 字母数字字符
eg:binding:"alphanumunicode"
numeric:数字 //是否包含基本数值。基本排除指数等...对于整数或浮点它返回真。
hexadecimal:是否包含有效的十六进制
hexcolor:是否包含有效的十六进制颜色,包括标签 (#)
rgb:这将验证字符串值是否包含有效的 rgb 颜色
rgba:这将验证字符串值是否包含有效的 rgba 颜色
hsl:这将验证字符串值是否包含有效的 hsl 颜色
url: 网址//这验证了一个字符串值是否包含一个有效的 url 这将接受 golang 请求 uri 接受的任何 url,但必须包含一个模式,例如 http:// 或 rtmp://
base64:是否包含有效的 base64值
btc_addr:是否包含一个有效的比特币地址
eth_addr: 是否包含有效的以太坊地址
startswith:是否以什么开头的字符串 // 这验证字符串值是否以提供的字符串值开头
eg:binding:"startswith=Jeff" // 验证字符串是否以"Jeff"开头
endswith:是否以什么结尾的字符串 // 这验证字符串值是否以提供的字符串值结尾
eg:binding:"endswith=eileen" // 验证字符串是否以"eileen"结尾
uuid: 是否包含有效的 UUID // 这将验证字符串值是否包含有效的 UUID。大写 UUID 值不会通过 - 请改用 `uuid_rfc4122`
ASCII:这将验证字符串值仅包含 ASCII 字符
multibyte:是否包含一个或多个多字节字符
latitude:纬度
longitude:经度
ip:这将验证字符串值是否包含有效的 IP 地址。
ipv4:这将验证字符串值是否包含有效的 IPv4 地址。
ipv6:这将验证字符串值是否包含有效的 IPv6 地址。
tcp_addr: 这将验证字符串值是否包含有效的可解析 TCP 地址。
tcp4_addr:这将验证字符串值是否包含有效的可解析 TCPv4 地址。
tcp6_addr:这将验证字符串值是否包含有效的可解析 TCPv6 地址。
udp_addr: 这将验证字符串值是否包含有效的可解析 UDP 地址。
udp4_addr: 这将验证字符串值是否包含有效的可解析 UDPv4 地址。
udp6_addr: 这将验证字符串值是否包含有效的可解析 UDPv6 地址。
html: 字符串是否为一个 HTML 元素标签
选择了IT,必定终身学习