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如何替换某个文件中的字符串
Apr 25 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
解决golang结构体tag编译错误的问题
May 02 Golang
golang elasticsearch Client的使用详解
May 05 Golang
Golang 编译成DLL文件的操作
May 06 Golang
Goland使用Go Modules创建/管理项目的操作
May 06 Golang
Golang实现AES对称加密的过程详解
May 20 Golang
入门学习Go的基本语法
Jul 07 Golang
Go语言基础函数基本用法及示例详解
Nov 17 Golang
Golang 对es的操作实例
Apr 20 Golang
Golang入门之计时器
May 04 Golang
Python测试框架pytest核心库pluggy详解
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实现动态柱状图改进版
2015/03/30 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
python中as用法实例分析
2015/04/30 Python
Python生成随机验证码的两种方法
2015/12/22 Python
python绘制立方体的方法
2018/07/02 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
python批量处理文件或文件夹
2020/07/28 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
python如何查看网页代码
2020/06/07 Python
法雷奥SQA(electric)面试问题
2016/01/23 面试题
大学生毕业自荐信
2013/10/10 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
介绍信范文
2015/01/31 职场文书
主题班会开场白
2015/06/01 职场文书
城南旧事电影观后感
2015/06/16 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
实战Python爬虫爬取酷我音乐
2022/04/11 Python