validator参数校验
validator参数校验
type Req struct {
Sn string `json:"sn" binding:"required"`
}
email:邮箱验证 // 这将验证字符串值是否包含有效的电子邮件。
eg:binding:"email"
required:必填 // 对于数字,确保值不为零。对于字符串,确保值不是“”。对于切片、映射、指针、接口、通道和函数,确保值不为零。
eg:binding:"required"
required_with:必填 // 对于数字,不为空就行。对于字符串,确保值不是“”,对于切片、映射、指针、接口、通道和函数,确保值不为零。
eg:binding:"required_with"
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"
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 元素标签
validator参数校验的更多相关文章
- Hibernate Validator参数校验
日常开发中经常会遇到需要参数校验的情况,比如某个字段不能为空.长度不能超过5等都属于参数校验的范围.对于简单的参数校验通过写几个if-else判断语句就搞定,但是对于复杂的多个参数校验的情况,就不是那 ...
- hibernate validator参数校验&自定义校验注解
参数校验:简单的就逐个手动写代码校验,推荐用Valid,使用hibernate-validator提供的,如果参数不能通过校验,报400错误,请求格式不正确: 步骤1:在参数对象的属性上添加校验注解如 ...
- validator 参数校验的常用注解
@AssertFalse Boolean,boolean 验证注解的元素值是false @AssertTrue Boolean,boolean 验证注解的元素值是true @NotNull 任意类型 ...
- SpringBoot 参数校验的方法
Introduction 有参数传递的地方都少不了参数校验.在web开发中,前端的参数校验是为了用户体验,后端的参数校验是为了安全.试想一下,如果在controller层中没有经过任何校验的参数通过s ...
- SpringBoot 如何进行参数校验,老鸟们都这么玩的!
大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...
- validator库参数校验
目录 validator库参数校验若干实用技巧 基本示例 翻译校验错误提示信息 自定义错误提示信息的字段名 自定义结构体校验方法 自定义字段校验方法 自定义翻译方法 validator库参数校验若干实 ...
- gin使用validator库参数校验若干实用技巧
validator库参数校验若干实用技巧 本文介绍了使用validator库做参数校验的一些十分实用的使用技巧,包括翻译校验错误提示信息.自定义提示信息的字段名称.自定义校验方法等. validato ...
- SpringMVC参数校验(针对`@RequestBody`返回`400`)
SpringMVC参数校验(针对@RequestBody返回400) 前言 习惯别人帮忙做事的结果是自己不会做事了.一直以来,spring帮我解决了程序运行中的各种问题,我只要关心我的业务逻辑,设计好 ...
- python项目使用jsonschema进行参数校验
python项目使用jsonschema进行参数校验 最近想要给一个新的openstack项目加上参数校验,过完年回来准备开工的时候,发现其他人已经在做了,对应的patch是:https://revi ...
随机推荐
- 【Java】数组
文章目录 数组 一.数组的定义 二.数组的声明与创建 三.内存分析 四.三种初始化 五.数组的四个基本特点 六.数组边界 七.数组的使用 八.多维数组 九.Arrays类 十.稀疏数组 数组 一.数组 ...
- 计算机视觉--CV技术指南文章汇总
前言 本文汇总了过去本公众号原创的.国外博客翻译的.从其它公众号转载的.从知乎转载的等一些比较重要的文章,并按照论文分享.技术总结三个方面进行了一个简单分类.点击每篇文章标题可阅读详细内容 欢迎关注 ...
- java基础05-类型转换
java基础05-类型转换 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换. 低 ---------------------------> 高 byte , short , ...
- Linux增加用户
Linux增加用户 注意一个不加-m不会出现家目录 sudo useradd Hans -m sudo passwd Hans sudo usermod -s /bin/bash Hans sudo ...
- 什么是HTTP? HTTP 和 HTTPS 的区别?
转载地址: 面试官:什么是HTTP? HTTP 和 HTTPS 的区别? 一.HTTP HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范 ...
- 将Java连接数据库操作封装到MySQL类中
public class MySQL { final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; final String D ...
- K8S 权限控制访问之 rbac
RBAC API类型 RBAC API 所声明的四种顶级类型[Role.ClusterRole.RoleBinding 和 ClusterRoleBinding].用户可以像与其他 API 资源交互一 ...
- mysql加强(4)~多表查询
mysql加强(4)~多表查询:笛卡尔积.消除笛卡尔积操作(等值.非等值连接),内连接(隐式连接.显示连接).外连接.自连接 一.笛卡尔积 1.什么是笛卡尔积: 数学上,有两个集合A={a,b},B= ...
- C++的set重载运算符
转载: https://www.cnblogs.com/zhihaospace/p/12843802.html set 容器模版需要3个泛型参数,如下: template<class T, cl ...
- [论文笔记][半监督语义分割]Universal Semi-Supervised Semantic Segmentation
论文原文原文地址 Motivations 传统的训练方式需要针对不同 domain 的数据分别设计模型,十分繁琐(deploy costs) 语义分割数据集标注十分昂贵,费时费力 Contributi ...