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 interface{}==nil 的几种坑及原理分析
Apr 24 Golang
用golang如何替换某个文件中的字符串
Apr 25 Golang
go 原生http web 服务跨域restful api的写法介绍
Apr 27 Golang
golang 实现菜单树的生成方式
Apr 28 Golang
解决golang post文件时Content-Type出现的问题
May 02 Golang
golang日志包logger的用法详解
May 05 Golang
Golang: 内建容器的用法
May 05 Golang
go select编译期的优化处理逻辑使用场景分析
Jun 28 Golang
Go语言基础知识点介绍
Jul 04 Golang
Golang map映射的用法
Apr 22 Golang
Golang解析JSON对象
Apr 30 Golang
Golang实现可重入锁的示例代码
May 25 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
世界上第一台立体声收音机
2021/03/01 无线电
分享一个Laravel好用的Cache宏
2015/03/02 PHP
yii用户注册表单验证实例
2015/12/26 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
Python的垃圾回收机制详解
2019/08/28 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
平安校园建设方案
2014/05/02 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
2014年食堂工作总结
2014/11/20 职场文书
幼儿园辞职信
2015/05/13 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis