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语言求任意类型切片的长度操作
Apr 26 Golang
golang中实现给gif、png、jpeg图片添加文字水印
Apr 26 Golang
golang中切片copy复制和等号复制的区别介绍
Apr 27 Golang
golang在GRPC中设置client的超时时间
Apr 27 Golang
go结构体嵌套的切片数组操作
Apr 28 Golang
go xorm框架的使用
May 22 Golang
Go语言空白表示符_的实例用法
Jul 04 Golang
golang中字符串MD5生成方式总结
Jul 04 Golang
golang内置函数len的小技巧
Jul 25 Golang
Golang MatrixOne使用介绍和汇编语法
Apr 19 Golang
Golang map映射的用法
Apr 22 Golang
Golang 入门 之url 包
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
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
Django中几种重定向方法
2015/04/28 Python
详解Python爬虫的基本写法
2016/01/08 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
详解Python装饰器
2019/03/25 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
保险专业大学生职业规划书
2014/03/03 职场文书
质量标语大全
2014/06/12 职场文书
工会工作个人总结
2015/03/03 职场文书
报案材料怎么写
2015/05/25 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
2016猴年春节慰问信
2015/11/30 职场文书
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技
Python各协议下socket黏包问题原理
2022/04/12 Python