GoFrame框架数据校验之校验结果Error接口对象


Posted in Golang onJune 21, 2022

上一篇文章介绍了 GoFrame数据校验之校验对象 | 校验结构体 ,得到了大家积极的反馈。

再接再厉,这篇总结分享:GoFrame数据校验之校验结果总结分享。

基本介绍

校验结果为一个Error接口对象。当数据规则校验成功时,校验方法返回的结果为nil

当数据规则校验失败时,返回的该对象是包含结构化的层级map,包含多个字段及其规则及对应错误信息,以便于接收端能够准确定位错误规则。

方法示例

首先我们看一下Error的数据结构:

type Error interface {
    Current() error
    Error() string
    FirstItem() (key string, messages map[string]string)
    FirstRule() (rule string, err string)
    FirstString() (err string)
    Items() (items []map[string]map[string]string)
    Map() map[string]string
    Maps() map[string]map[string]string
    String() string
    Strings() (errs []string) 
}

注意问题

可以通过Maps()方法获得该原始错误信息数据结构map

在项目开发中,我们可以通过Error接口的其他方法来获取特定的错误信息。

当我们并不关心具体出错的校验规则时,可以使用String方法,直接返回所有的错误信息。

方法详解

获取校验结果的值可以通过多个校验结果方法获取:

Items()在顺序性校验中将会按照校验规则返回校验错误的信息数组。其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

Map() 会返回FirstItem中的出错规则及对应的错误信息map

Maps() 会返回所有的出错键名及对应的出错规则及对应的错误信息(map[string]map[string]string)。

String() 会返回所有的错误信息,构成一条字符串返回,多个规则错误信息之间以;符号连接。其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。我们会比较常用。

Strings 会返回所有的错误信息,构成[]string类型返回。其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

FirstItem 在有多个键名/属性校验错误的时候,用以获取出错的第一个键名,以及其对应的出错规则和错误信息。其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

FirstRule 会返回FirstItem中得第一条出错的规则及错误信息。其顺序性只有使用顺序校验规 则时有效,否则返回的结果是随机的。

FirstString 会返回FirstRule中得第一条规则错误信息。其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

进阶

因为gvalid.Error实现了Current() error接口,因此可以通过gerror.Current方法获取它的第一条错误信息,这在接口校验失败时返回错误信息非常方便。

注意问题

数据校验时存在顺序性校验和非顺序性校验,这会对获取第一条错误信息的结果产生影响。

关于顺序与非顺序性校验,可以关注我,后面的文章中会更新说明。

总结

这篇文章为大家介绍了GoFrame gvalid 校验结果相关的知识点:

校验结果为一个Error接口对象。当数据规则校验成功时,校验方法返回的结果为nil

当数据规则校验失败时,返回的该对象是包含结构化的层级map,包含多个字段及其规则及对应错误信息,以便于接收端能够准确定位错误规则。

更多关于GoFrame数据校验Error接口对象的资料请关注三水点靠木其它相关文章!


Tags in this post...

Golang 相关文章推荐
Go语言-为什么返回值为接口类型,却返回结构体
Apr 24 Golang
golang中切片copy复制和等号复制的区别介绍
Apr 27 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
Golang Gob编码(gob包的使用详解)
May 07 Golang
Go 在 MongoDB 中常用查询与修改的操作
May 07 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
Go 中的空白标识符下划线
Mar 25 Golang
Golang数据类型和相互转换
Apr 12 Golang
Go语言grpc和protobuf
Apr 13 Golang
详解Go语言中Get/Post请求测试
Jun 01 Golang
GoFrame基于性能测试得知grpool使用场景
Jun 21 Golang
GoFrame基于性能测试得知grpool使用场景
Jun 21 #Golang
Golang gRPC HTTP协议转换示例
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 #Golang
Go gRPC进阶教程gRPC转换HTTP
Jun 16 #Golang
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
Jun 14 #Golang
Go调用Rust方法及外部函数接口前置
详解Go语言中配置文件使用与日志配置
Jun 01 #Golang
You might like
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
JS 遮照层实现代码
2010/03/31 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
Python元组知识点总结
2019/02/18 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
外包公司软件测试工程师
2014/11/01 面试题
资产评估专业学生的自我鉴定
2013/11/14 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
荒岛余生观后感
2015/06/09 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python
Python 匹配文本并在其上一行追加文本
2022/05/11 Python