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 相关文章推荐
golang中的空slice案例
Apr 27 Golang
golang http使用踩过的坑与填坑指南
Apr 27 Golang
golang 实现两个结构体复制字段
Apr 28 Golang
彻底理解golang中什么是nil
Apr 29 Golang
golang DNS服务器的简单实现操作
Apr 30 Golang
浅谈golang 中time.After释放的问题
May 05 Golang
解决golang 关于全局变量的坑
May 06 Golang
Go语言并发编程 sync.Once
Oct 16 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
golang为什么要统一错误处理
Apr 03 Golang
Go归并排序算法的实现方法
Apr 06 Golang
Golang Elasticsearches 批量修改查询及发送MQ
Apr 19 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
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
javascript控制台详解
2015/06/25 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
python中threading开启关闭线程操作
2020/05/02 Python
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
中学老师的自我评价
2013/11/07 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
大二自我鉴定
2014/01/31 职场文书
土地租赁意向书
2014/07/30 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
初中重阳节活动总结
2015/05/05 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技