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"

 

posted @ 2025-08-13 14:15  CJTARRR  阅读(13)  评论(0)    收藏  举报