PhalGo-参数验证过滤

时间:2022-04-29
本文章向大家介绍PhalGo-参数验证过滤,主要内容包括PhalGo-参数验证过滤、使用方法、报错机制、支持参数验证类型、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

PhalGo-参数验证过滤

phalGo 的参数过滤使用 beego 提供的独立模块 validation 进行封装改造 , 从而达到可以和 request 一同使用的效果 , 通过统一的报错机制对不匹配的参数进行处理.

连贯操作

当我们自己进行参数验证时,我们需要先获取参数,在判断参数是否存在,判断长度是否在制定范围内,在判断是否符合我们所需要的格式,尤其在Go语言需要花费大量的代码量来实现这一系列功能,但是在PhalGo中进行了良好的封装,对一个参数的基本处理都能在一行内完成,如下所示:

name := Request.Param("name").Require(true).Max(30).SetDefault("喵咪").GetString()

一个连贯操作就对一个参数进行很好的描述,而不用和传统的写法一样消耗大量的代码量在参数获取验证上面

使用方法

PhalGo的参数验证是和Request紧密结合在一起的大致格式如下:

Request.Param(参数名称).你需要的验证规则.Get参数类型

这样就可以获取一个被验证过的参数

报错机制

当我们参数验证不通过是需要处理的,当我们对所有参数定义完成之后,我们只需要重写一下一个error处理语句方可对验证不通过的参数进行处理:

	//参数过滤error处理
	if err := Request.GetError(); err != nil {
		return Response.RetError(err, -1)
	}

注意:此处默认会返回首个验证失败的参数报错,当有多个验证失败也只返回首个

支持参数验证类型

PhalGo的参数验证支持大部分验证规则:

  • Require(bool) //是否必须
  • Max(int) //最大长度/大小
  • Min(int) //最小长度/大小
  • ZipCode() //邮政编码
  • Phone() //手机号或固定电话号
  • Tel() //固定电话号
  • Mobile() //手机号
  • Base64() //base64编码
  • IP() //IP格式,目前只支持IPv4格式验证
  • Email() //邮箱格式
  • Match(string) //正则匹配,其他类型都将被转成字符串再匹配
  • NoMatch(string) //反正则匹配,其他类型都将被转成字符串再匹配
  • Numeric() //数字
  • Alpha() //alpha字符
  • AlphaNumeric() //alpha字符或数字
  • AlphaDash() //alpha字符或数字或横杠-_