iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何实现golan参数校验Validator
  • 341
分享到

如何实现golan参数校验Validator

2023-06-22 03:06:00 341人浏览 独家记忆
摘要

这篇文章主要介绍如何实现Golan参数校验Validator,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.实践go get GitHub.com/go-playground/validator

这篇文章主要介绍如何实现Golan参数校验Validator,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1.实践

go get GitHub.com/go-playground/validator/v10

定义结体:

type UserInfo struct { ID    int `validate:"gt=0"` Age   int `validate:"gt=0"` Name  string `validate:"required"` Sex   string `validate:"required"`}

初始化结构体并做参数校验:

func InitUserInfo(id,age int,name,sex string) *UserInfo { // new一个校验器 valid := validator.New() // 初始化UserInfo userInfo := &UserInfo{  ID: id,  Age: age,  Name:name,  Sex:sex, } if err := valid.Struct(userInfo);err != nil {  fmt.Println("参数校验不通过",err) } return userInfo}

效果:

InitUserInfo(1,2,"kevin","男")// 参数校验通过InitUserInfo(0,2,"kevin","男")// 参数校验不通过 Key: 'UserInfo.ID' Error:Field validation for 'ID' failed on the 'gt' tagInitUserInfo(1,2,"kevin","")// 参数校验不通过 Key: 'UserInfo.Sex' Error:Field validation for 'Sex' failed on the 'required' tag

如参数校验不通过,err中会包含不通过字段信息

1.1校验标签

-:跳过该字段,不测验;
|:应用多个束缚,只须要满足其中一个,例如rgb|rgba;
required:字段必须设置,不能为默认值;
omitempty:如果字段未设置,则疏忽它

如何实现golan参数校验Validator

如何实现golan参数校验Validator

1.2字符串约束

  • excludesall:不包含参数中任意的 UNICODE 字符,例如excludesall=ab

  • excludesrune:不包含参数表示的 rune 字符,excludesrune=asong

  • startswith:以参数子串为前缀,例如startswith=hi

  • endswith:以参数子串为后缀,例如endswith=bye

  • contains= :包含参数子串,例如contains=email

  • containsany:包含参数中任意的 UNICODE 字符,例如containsany=ab

  • containsrune:包含参数表示的 rune 字符,例如`containsrune=asong

  • excludes:不包含参数子串,例如excludes=email

1.3自定义校验器

在Gin中支持实现自定义校验标签

定义校验逻辑:

// sum不能大于10func VerifySum(level validator.FieldLevel) bool { if sum,ok := level.Field().Interface().(int);ok{  fmt.Println(sum)  if sum > 10 {   return false  }  return true } return false}

注册标签:

 // 注册 if v,ok := binding.Validator.Engine().(*validator.Validate); ok {  if err := v.ReGISterValidation("sum",VerifySum);err != nil{   fmt.Println("参数校验标签注册失败")  }  fmt.Println("参数校验标签注册成功") }

应用标签到结构体上:

type TestSum struct { Sum int `binding:"sum"`}

测试:

func getSum(c *gin.Context) { var b TestSum b.Sum = cast.ToInt(c.Request.URL.Query().Get("sum")) // 数据模型绑定查询字符串验证 if err := c.ShouldBindWith(&b, binding.Query); err == nil {  c.JSON(Http.StatusOK, gin.H{"message": "prams are valid!"}) } else {  c.jsON(http.StatusBadRequest, gin.H{"error": err.Error()}) }}func main()  { route := gin.Default() // 注册 if v,ok := binding.Validator.Engine().(*validator.Validate); ok {  if err := v.RegisterValidation("sum",VerifySum);err != nil{   fmt.Println("参数校验标签注册失败")  }  fmt.Println("参数校验标签注册成功") } route.GET("/getSum", getSum) route.Run(":8080")}

如何实现golan参数校验Validator

如何实现golan参数校验Validator

附加:

Go中获取标签值是通过反射进行获取的:

  type TestSum struct {    Sum int `binding:"sum"`  }  // 获取标签值: var b TestSum b_type := reflect.TypeOf(b) fmt.Println(b_type.Field(0).Tag.Get("binding"))

以上是“如何实现golan参数校验Validator”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何实现golan参数校验Validator

本文链接: https://www.lsjlt.com/news/302258.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golan参数校验Validator
    目录1.实践1.1校验标签1.2字符串约束1.3自定义校验器前言: 开发接口的时候需要多前端提交的参数进行参数校验,如果提交的参数只有一个两个,这样我们可以简单写个if判断,但是如果...
    99+
    2022-11-12
  • 如何实现golan参数校验Validator
    这篇文章主要介绍如何实现golan参数校验Validator,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.实践go get github.com/go-playground/validator...
    99+
    2023-06-22
  • SprinBoot如何集成参数校验Validator及参数校验的高阶技巧
    目录为什么需要参数校验SpringBoot中集成参数校验第一步,引入依赖第二步,定义要参数校验的实体类第三步,定义校验类进行测试第四步,体验效果参数异常加入全局异常处理器体验效果自定...
    99+
    2022-11-13
  • golang validator库参数校验实用技巧有哪些
    这篇“golang validator库参数校验实用技巧有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“gol...
    99+
    2023-06-30
  • springboot中validator数据校验功能的实现
    普通校验 导入依赖: 默认的报错:没有提示具体的属性 设置自己的错误信息提示:创建 ValidationMessages.properties 内容如下: user.id....
    99+
    2022-11-12
  • java如何优雅的实现参数非空校验,快速实现参数非空校验,使用@valid实现参数非空校验
    在java项目接口中,有些必传参数需要进行非空校验,如果参数过多,代码会繁杂且冗余,如何优雅的对参数进行非空校验,下面是实现流程 目录 一、整体思路二、引入依赖1、SpringBoot项...
    99+
    2023-10-21
    java 开发语言
  • SpringMVC使用hibernate-validator进行参数校验最佳实践记录
    在我们用Controller接收参数后,往往需要对参数进行校验。如果我们手写校验的话,就会有一堆的判空代码,看起来很不优雅,写起来也费时费力。下面来看下通过hibernate-val...
    99+
    2022-11-12
  • springmvc的validator数据校验的实现示例代码
    一、什么是数据校验?这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验。数据校验分为客户端校验和服务端校验客户端校验:js校验服务端校验:springmvc使用v...
    99+
    2023-05-31
    spring mvc 数据
  • Python中rapidjson参数校验实现
    目录前言rapidjson简介和安装rapidjson基本使用dumps() 方法skipkeysensure_asciisort_keysdump()方法Validator class前言 在使用Django框架...
    99+
    2022-06-02
    Python rapidjson参数校验 Python 参数校验
  • Java如何实现优雅的参数校验
    这篇文章主要介绍“Java如何实现优雅的参数校验”,在日常操作中,相信很多人在Java如何实现优雅的参数校验问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现优雅的参数校验”的疑惑有所帮助!接下来...
    99+
    2023-07-02
  • spring-boot-starter-validation 校验参数的实现
    目录一、前言二、常用注解三、定义分组四、定义需要校验的对象五、在handler 即 Controller中 校验六、定义全局异常处理类七、测试效果八、嵌套对象的校验九、自定义注解(自...
    99+
    2022-11-13
  • springboot接口参数校验JSR303的实现
    目录一、在controller接口处理校验异常二、统一异常处理三、错误码枚举类四、自定义参数校验注解在 javax.validation.constraints包中定义了非常多的校验...
    99+
    2022-11-13
    springboot接口参数校验JSR303 springboot JSR303
  • 如何对参数进行校验
    本篇内容主要讲解“如何对参数进行校验”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何对参数进行校验”吧!背景大部分的方法和构造函数对传入的参数值有一些限制,比...
    99+
    2022-10-19
  • SpringBoot如何利用validation实现优雅的校验参数
    这篇“SpringBoot如何利用validation实现优雅的校验参数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spr...
    99+
    2023-07-02
  • Spring WebFlux如何实现参数校验的示例代码
    这篇文章主要为大家展示了“Spring WebFlux如何实现参数校验的示例代码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring WebFlux如何实现参数校验的示例代码”这篇文章吧。...
    99+
    2023-06-20
  • Spring Boot怎么实现请求参数校验
    这篇文章主要介绍了Spring Boot怎么实现请求参数校验的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Boot怎么实现请求参数校验文章都会有所收获,下面我们一...
    99+
    2022-10-19
  • Springboot 如何使用BindingResult校验参数
    目录使用BindingResult校验参数1、创建一个参数对象2、controller控制层写参数接收的入口3、传入参数和控制台打印结果4、常用校验注解BindingResult 作...
    99+
    2022-11-13
  • SpringBoot如何进行参数校验实例详解
    目录前言为什么需要参数校验SpringBoot中集成参数校验第一步,引入依赖第二步,定义要参数校验的实体类第三步,定义校验类进行测试第四步,体验效果参数异常加入全局异常处理器体验效果...
    99+
    2022-11-13
  • SpringBoot如何通过自定义注解实现参数校验
    今天小编给大家分享一下SpringBoot如何通过自定义注解实现参数校验的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. ...
    99+
    2023-07-04
  • Bootstrap中Validator如何实现注册校验和登录错误提示效果
    这篇文章给大家分享的是有关Bootstrap中Validator如何实现注册校验和登录错误提示效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、介绍在AdminEAP框架中,...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作