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字符或数字或横杠-_
相关文章
|
数据可视化 Linux Go
Docker容器命令行可视化工具-Lazydocker
Lazydocker-专为懒人设计的容器命令行可视化交互式工具
1515 0
Docker容器命令行可视化工具-Lazydocker
|
缓存 前端开发 Java
在Java项目中实现跨域资源共享(CORS)
在Java项目中实现跨域资源共享(CORS)
anaconda下载安装,镜像源配置修改及虚拟环境的创建
这篇文章介绍了Anaconda的下载安装过程,包括Anaconda的简介、安装步骤、配置修改、创建虚拟环境以及一些常用命令的使用方法。文章还提供了如何修改conda的镜像源为国内镜像源以加速下载的步骤。
anaconda下载安装,镜像源配置修改及虚拟环境的创建
|
供应链 安全 物联网
新兴科技的蓬勃发展与应用前景
随着科技的不断进步,新兴技术如区块链、物联网、虚拟现实等正日益成为人们关注的焦点。本文将围绕这些新兴技术的发展趋势和应用场景展开探讨,从而帮助读者更好地了解这些技术的潜力和前景。
262 30
|
分布式计算 DataWorks 大数据
MaxCompute产品使用问题之如何为某个用户授予仅对生产表的SELECT权限
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
109 9
|
JavaScript
proxy
peoxy
127 0
|
Java Spring 容器
【Spring 源码学习系列】ApplicationContextAware 方法的调用时机
在实际业务开发中,经常借助 ApplicationContextAware 获取 ApplicationContext 然后构造业务枚举到处理 Bean 的策略模式映射。那么,不知道大家是否都了解 `setApplicationContext `的调用时机呢? 本文结合一个简单示例分析一下,这里强烈建议大家自己动手调试一下,印象会更加深刻。
707 0
|
存储 Java API
Java开发——23.泛型
泛型的通配符/定义格式。
Java开发——23.泛型
|
Windows
Win 10获三大厂商硬件驱动更新
据外媒Windows Lastest今日报道,英特尔、英伟达和AMD为Windows 10系统更新了驱动程序。这些更新是为了让未来的软件更好的在设备上运行,因此保持更新是非常必要的。特别是对于游戏爱好者,显卡的驱动程序更新一般会为最新的3A大作提供支持,修复错误,更新后能获得更好的体验。
318 0
Win 10获三大厂商硬件驱动更新