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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WindCoder

JVM-Java内存区域

JVM在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,都有着各自的用途以及创建和销毁时间。包括以下几个如图所示的运行时数据区域:

2271
来自专栏用户画像

浅析JVM

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模...

882
来自专栏技术记录

Protobuf3语法详解

1.1K5
来自专栏程序员宝库

PHP 中被忽略的性能优化利器:生成器

如果是做Python或者其他语言的小伙伴,对于生成器应该不陌生。但很多PHP开发者或许都不知道生成器这个功能,可能是因为生成器是PHP 5.5.0才引入的功能,...

3156
来自专栏木宛城主

Unity应用架构设计(7)——IoC工厂理念先行

一谈到 『IoC』,有经验的程序员马上会联想到控制反转,将创建对象的责任反转给工厂。IoC是依赖注入 『DI』 的核心,大名鼎鼎的Spring框架就是一个非常...

2867
来自专栏阮一峰的网络日志

asm.js 和 Emscripten 入门教程

Web 技术突飞猛进,但是有一个领域一直无法突破 ---- 游戏。 游戏的性能要求非常高,一些大型游戏连 PC 跑起来都很吃力,更不要提在浏览器的沙盒模型里跑了...

3105
来自专栏owent

我们的Lua类绑定机制

最近一个人搞后台,框架底层+逻辑功能茫茫多,扛得比较辛苦,一直没抽出空来写点东西。

3031
来自专栏加米谷大数据

Python 3.7.0 正式版新特性解析

美国时间6月27日晚8点,Python 3.7.0 经过多轮测试,终于发布了正式版,增强了多处特性功能,同时 3.6 也更新到 3.6.6 稳定版本。

1671
来自专栏欧阳大哥的轮子

深入解构iOS系统下的全局对象和初始化函数

事件源于接入了一个第三方库导致应用出现了大量的crash记录,很奇怪的是这么多的crash居然没有收到用户的反馈信息! 在这个过程中每个崩溃栈的信息都明确的指向...

2202
来自专栏醉梦轩

Python和JavaScript中的生成器与协程

Python和JavaScript中都有生成器(Generator)和协程(coroutine)的概念。本文通过分析两者在这两种语言上的使用案例,来对比它们的差...

2462

扫码关注云+社区

领取腾讯云代金券