gin自定义binding校验标签
1.单字段校验函数示例
func singleFieldValidator(fl validator.FieldLevel) bool { // 利用反射的方法,取出字段值,这里假设字段值是string类型 value := fl.Field().String() // 接下来就是校验字段值,返回true表示校验通过,返回false表示校验失败 }
2.多字段联合校验函数示例
func multiFieldValidator(fl validator.FieldLevel) bool { // 通过当前字段获得父结构体 parent := fl.Parent() if parent.Kind() == reflect.Struct { // 获取同结构体的其他字段,这里假设是结构体的"Password"字段 password := parent.FieldByName("Password").String() // 获得当前字段的值,这里假设是字符串 confirmPassword := fl.Field().String() // 接下来就是校验,返回true表示校验通过,false表示校验失败 } return false }
3.注册校验函数
if v, ok := binding.Validator.Engine().(*validator.Validate); ok { // 注册单字段校验函数 err := v.RegisterValidation("single", singleFieldValidator) if err != nil { log.Fatalln("注册自定义单字段校验标签失败") } // 注册多字段校验函数 err = v.RegisterValidation("multi", multiFieldValidator) if err != nil { log.Fatalln("注册自定义多字段联合校验标签失败") } } // 注册完之后,就可以像其他标签一样使用了,比如:binding:"required,single"
浙公网安备 33010602011771号