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 import自定义包方式
Apr 29 Golang
对Golang中的FORM相关字段理解
May 02 Golang
goland 设置project gopath的操作
May 06 Golang
go语言中http超时引发的事故解决
Jun 02 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
golang内置函数len的小技巧
Jul 25 Golang
Go语言基础切片的创建及初始化示例详解
Nov 17 Golang
如何利用golang运用mysql数据库
Mar 13 Golang
浅谈GO中的Channel以及死锁的造成
Mar 18 Golang
golang操作redis的客户端包有多个比如redigo、go-redis
Apr 14 Golang
深入理解 Golang 的字符串
May 04 Golang
Go 内联优化让程序员爱不释手
Jun 21 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
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
php实现的mongodb操作类
2015/05/28 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
详解Python网络爬虫功能的基本写法
2016/01/28 Python
python实现简易通讯录修改版
2018/03/13 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
HTML5制作表格样式
2016/11/15 HTML / CSS
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
优秀党员主要事迹
2014/01/19 职场文书
文明风采获奖感言
2014/02/18 职场文书
大学自主招生推荐信
2014/05/10 职场文书
护理专业自荐书
2014/06/04 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
催款律师函范文
2015/05/27 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL