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
Go语言 go程释放操作(退出/销毁)
Apr 30 Golang
使用golang编写一个并发工作队列
May 08 Golang
Golang实现AES对称加密的过程详解
May 20 Golang
go web 预防跨站脚本的实现方式
Jun 11 Golang
基于Go语言构建RESTful API服务
Jul 25 Golang
浅谈GO中的Channel以及死锁的造成
Mar 18 Golang
Golang使用Panic与Recover进行错误捕获
Mar 22 Golang
Go归并排序算法的实现方法
Apr 06 Golang
Golang原生rpc(rpc服务端源码解读)
Apr 07 Golang
Golang入门之计时器
May 04 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代码优化及php相关问题总结
2006/10/09 PHP
php 正则匹配函数体
2009/08/25 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
js里的prototype使用示例
2010/11/19 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
浅谈 javascript 事件处理
2015/01/04 Javascript
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
python学习教程之使用py2exe打包
2017/09/24 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
django 微信网页授权登陆的实现
2019/07/30 Python
python如何编写win程序
2020/06/08 Python
群众路线四风问题整改措施
2014/09/27 职场文书
个人工作保证书
2015/02/28 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
用Python创建简易网站图文教程
2021/06/11 Python
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
canvas实现贪食蛇的实践
2022/02/15 Javascript
golang语言指针操作
2022/04/14 Golang