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

简介: 这篇总结分享: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,包含多个字段及其规则及对应错误信息,以便于接收端能够准确定位错误规则。

相关文章
|
2月前
|
SQL API 数据库
优雅地进行入参数据校验:场景和处理方式
在日常的开发工作中,入参数据校验是确保程序健壮性的关键步骤之一,我们需要确保请求中的数据类型、格式和取值范围符合要求,以保证接口的安全性和稳定性,还有就是传递给方法或函数的数据需要满足一定的规则和要求,以保证程序的正常运行和数据的有效处理。那么本文就来分享一下在哪些场景下进行入参数据校验,并分享一些优雅的处理方式,以提高代码的可读性、扩展性和复用性。
22 3
优雅地进行入参数据校验:场景和处理方式
|
8月前
|
前端开发 Java 数据库
Spring Entity数据校验,分组校验,返回校验结果给前端
Spring Entity数据校验,分组校验,返回校验结果给前端
66 0
|
10月前
|
前端开发 JavaScript Java
SpringBoot 统一功能处理:用户登录权限校验-拦截器、异常处理、数据格式返回
本篇将要学习 Spring Boot 统一功能处理模块,这也是 AOP 的实战环节 用户登录权限的校验实现接口 HandlerInterceptor + WebMvcConfigurer 异常处理使用注解 @RestControllerAdvice + @ExceptionHandler 数据格式返回使用注解 @ControllerAdvice 并且实现接口 @ResponseBodyAdvice
333 0
|
10月前
|
Java 数据安全/隐私保护
使用反射实现@RequestBody的参数校验功能
springboot中对实体类参数中属性进行校验一般都是使用javax.validation中提供的注解
|
12月前
|
前端开发 Java API
数据校验(前端数据校验、JSR303校验)
数据校验(前端数据校验、JSR303校验)
154 0
|
消息中间件 JavaScript 小程序
SpringBoot 统一功能处理:用户登录权限校验-拦截器、异常处理、数据格式返回 下
SpringBoot 统一功能处理:用户登录权限校验-拦截器、异常处理、数据格式返回 下
SpringBoot 统一功能处理:用户登录权限校验-拦截器、异常处理、数据格式返回 下
|
JavaScript 前端开发 小程序
SpringBoot 统一功能处理:用户登录权限校验-拦截器、异常处理、数据格式返回 上
SpringBoot 统一功能处理:用户登录权限校验-拦截器、异常处理、数据格式返回 上
|
JSON Java 数据格式
hibernate-validator校验参数(统一异常处理)(下)
hibernate-validator校验参数(统一异常处理)
hibernate-validator校验参数(统一异常处理)(下)
|
Oracle Java 关系型数据库
hibernate-validator校验参数(统一异常处理)(上)
hibernate-validator校验参数(统一异常处理)
hibernate-validator校验参数(统一异常处理)(上)
|
Java API
SpringBoot中如何参数校验、统一异常、统一响应以及自定义注解
SpringBoot中如何参数校验、统一异常、统一响应以及自定义注解
283 7
SpringBoot中如何参数校验、统一异常、统一响应以及自定义注解