likes
comments
collection
share

GoFrame数据校验之校验结果 | Error接口对象

作者站长头像
站长
· 阅读数 19

前言摘要

上一篇文章介绍了 GoFrame数据校验之校验对象 | 校验结构体 ,得到了大家积极的反馈。

再接再厉,这篇总结分享:GoFrame数据校验的另外一个知识点:校验结果相关的总结分享。

基本介绍

首先我们要知道校验结果是什么?校验结果是一个Error接口对象。

当数据规则校验成功时,校验方法返回的结果为nil

当数据规则校验失败时,返回的是该对象是包含结构化的层级map,包含多个字段及其规则及对应错误信息,以便于接收端能够准确定位错误规则。

所以我们接收到校验结果的处理是:当收到nil时,说明校验通过,进行后续的逻辑处理就ok。当收到的结果不为nil时,将错误返回给前端;或者封装一个方法,按照我们自定义的数据结构,统一返回给前端。

Error的接口定义

首先我们看一下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接口的其他方法来获取特定的错误信息,比如:FirstRule()等,下面会进行详细介绍。

当我们并不关心具体出错的校验规则时,可以使用String方法,直接返回所有的错误信息。

方法详解

获取校验结果的值可以通过多个校验结果方法获取:

Items()

Items()在顺序性校验中将会按照校验规则返回校验错误的信息数组。

注意:其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

Map()

Map() 会返回FirstItem中的出错规则及对应的错误信息map

Maps()

Maps() 会返回所有的出错键名、对应的出错规则、对应的错误信息:(map[string]map[string]string)。

String()

我个人比较常用的是这个方法。

String() 会返回所有的错误信息,构成一条字符串返回,多个规则错误信息之间以;符号连接。

其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

Strings()

Strings() 会返回所有的错误信息,构成[]string类型返回。

其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

FirstItem()

FirstItem() 在有多个键名/属性校验错误的时候,用于获取出错的第一个键名,以及其对应的出错规则和错误信息。

其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

FirstRule()

FirstRule() 会返回FirstItem中得第一条出错的规则及错误信息。

其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

FirstString()

FirstString() 会返回FirstRule中得第一条规则错误信息。

其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

总结一下

我们发现多数方法都具有这个特点:其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。使用过程中要注意这个问题。

小技巧

因为gvalid.Error实现了Current() error接口,因此可以通过gerror.Current方法获取它的第一条错误信息,这在接口校验失败时,返回错误信息是非常方便的。

注意问题

数据校验时存在顺序性校验和非顺序性校验,这会对获取第一条错误信息的结果产生影响。

关于顺序与非顺序性校验,可以关注我,后面的文章中会更新说明。

总结

这篇文章为大家介绍了GoFrame gvalid 校验结果相关的知识点:

校验结果为一个Error接口对象。当数据规则校验成功时,校验方法返回的结果为nil

当数据规则校验失败时,返回的该对象是包含结构化的层级map,包含多个字段及其规则及对应错误信息,以便于接收端能够准确定位错误规则。

最后

感谢阅读,欢迎大家三连:点赞、收藏、投币(关注)!!!

GoFrame数据校验之校验结果 | Error接口对象

转载自:https://juejin.cn/post/7110952333193773064
评论
请登录