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字符或数字或横杠-_