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 元素标签

posted @ 2022-02-26 17:07  Jeff的技术栈  阅读(331)  评论(0编辑  收藏  举报
回顶部