第七篇:自定义验证器结合正则验证JSON参数

一:引言:上一篇我们使用了验证器,这也是一个非常强大的验证器,今天这篇我们来讲下自定义的验证器,并且结合正则来验证Json的参数,其实我们内置的验证器,也许不符合我们的要求,那么这个时候就需要

    加入我们自己的验证规则;

假设请求topic详细时 可以是:

/topics/123(id形式)

也可以是:

/topics/wodetiezi(拼音样式的url,或为了SEO等原因)

因此扩展下:

type Topic struct {
	TopicID int `json:"id"`
	TopicTitle string `json:"title" binding:"min=4,max=10"`
	TopicShortTitle string `json:"stitle" binding:"required,nefield=TopicTitle"`
	UserIP string `json:"ip" binding:"ipv4"`
	TopicScore int `json:"score" binding:"omitempty,gt=5"`
     TopicUrl string `json:"url" binding:"omitempty,topicurl"` }

 

我们加了个字段 TopicUrl,新增验证规则:TopicUrl string `json:"url" binding:"omitempty,topicurl"`

其中绑定了两个验证规则:

omitempty:如果传递,为传递的值,如果不传递,则默认为零值

topicurl:自定义的验证规则,自定义的验证规则的这个名字可以随便写,只要你喜欢就可以;

等下我们会写个函数专门对topicurl这个规则做验证处理,接下来我们根据官方文档的方式来创建一个规则;其实在我们的文档里有相关的例子;

首先我们去创建一个函数,这个函数里面有一堆的参数,这里面有些参数我们用不到,先用到一部分,后面遇到再讲解其它的一些用法;

      反射值获取原始值的方法
      Interface()interface{} 将值以interface{}类型返回,可以通过类型断言转换为指定类型
      Int() int64                  将值以int类型返回,所有有符号整型均可以此方式返回
      Uint() uint64               将值以uint类型返回,所有无符号整型均可以此方式返回
      Float() float64             将值以双精度(float64)类型返回,所有f浮点数(float32,float64)均可以此方式返回
      Bool()  bool                将值以bool类型返回
      Bytes()[]bytes              将值以字节数组[]bytes类型返回
      String() string             将值以字符串类型返回

 

1.1:创建自己的验证规则

 

 1.2:main函数中进行调用即可

 

posted @ 2020-06-22 15:54  痞子胥  阅读(457)  评论(0)    收藏  举报