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中semaphore(信号量)源码
Apr 03 Golang
Go缓冲channel和非缓冲channel的区别说明
Apr 25 Golang
go 原生http web 服务跨域restful api的写法介绍
Apr 27 Golang
golang通过递归遍历生成树状结构的操作
Apr 28 Golang
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 Golang
浅谈Golang 切片(slice)扩容机制的原理
Jun 09 Golang
go语言使用Casbin实现角色的权限控制
Jun 26 Golang
Go 通过结构struct实现接口interface的问题
Oct 05 Golang
Go语言并发编程 sync.Once
Oct 16 Golang
golang语言指针操作
Apr 14 Golang
Golang ort 中的sortInts 方法
Apr 24 Golang
基于Python实现西西成语接龙小助手
Aug 05 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的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
PHP之autoload运行机制实例分析
2014/08/28 PHP
php生成随机数的三种方法
2014/09/10 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
Python中类的初始化特殊方法
2017/12/01 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
python3 线性回归验证方法
2019/07/09 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
Django中modelform组件实例用法总结
2020/02/10 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
德国网上药房:Apotal
2017/04/04 全球购物
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
电大毕业自我鉴定
2014/02/03 职场文书
中学生寄语大全
2014/04/03 职场文书
新手上路标语
2014/06/20 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
党员查摆剖析材料
2014/10/10 职场文书
检讨书怎么写?
2019/06/21 职场文书
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python