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语言切片前或中间插入项与内置copy()函数详解
Apr 27 Golang
golang通过递归遍历生成树状结构的操作
Apr 28 Golang
基于Go Int转string几种方式性能测试
Apr 28 Golang
Golang中interface{}转为数组的操作
Apr 30 Golang
golang日志包logger的用法详解
May 05 Golang
解决goland 导入项目后import里的包报红问题
May 06 Golang
Go语言基础知识点介绍
Jul 04 Golang
Go中的条件语句Switch示例详解
Aug 23 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
GO语言异常处理分析 err接口及defer延迟
Apr 14 Golang
Golang 链表的学习和使用
Apr 19 Golang
Golang 遍历二叉树
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
解析php防止form重复提交的方法
2013/07/01 PHP
php实现的双向队列类实例
2014/09/24 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
基于jquery库的tab新形式使用
2012/11/16 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
python中threading超线程用法实例分析
2015/05/16 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Mac安装python3的方法步骤
2019/08/09 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
护士自荐信
2013/10/25 职场文书
英语简历自我评价
2014/01/26 职场文书
大专生自我评价
2014/01/28 职场文书
网络管理专业求职信
2014/03/15 职场文书
重阳节慰问信
2015/02/15 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js