当咱们援用了go-playground/validator/v10库并且配置了如下内容并配置了中文:

    Name  string `json:"name" validate:"required"

那么他的返回信息如下:

Name为必填字段

仍然不是很敌对,这个时候咱们就须要自定义谬误内容:

名称为必填字段

代码如下:

package utilsimport (    CN_ZH "github.com/go-playground/locales/zh"    ut "github.com/go-playground/universal-translator"    "github.com/go-playground/validator/v10"    zhTranslations "github.com/go-playground/validator/v10/translations/zh"    "reflect")var Validate *validator.Validate// Validate/v10 全局验证器var trans ut.Translator// 初始化Validate/v10国际化func init() {    zh := CN_ZH.New()    uni := ut.New(zh, zh)    trans, _ = uni.GetTranslator("zh")    Validate = validator.New()    //通过label标签返回自定义谬误内容    Validate.RegisterTagNameFunc(func(field reflect.StructField) string {        label := field.Tag.Get("label")        if label == "" {            return field.Name        }        return label    })    zhTranslations.RegisterDefaultTranslations(Validate, trans)    //自定义required_if谬误内容    Validate.RegisterTranslation("required_if", trans, func(ut ut.Translator) error {        return ut.Add("required_if", "{0}为必填字段!", false) // see universal-translator for details    }, func(ut ut.Translator, fe validator.FieldError) string {        t, _ := ut.T("required_if", fe.Field())        return t    })}// 测验并返回测验错误信息func Translate(err error) (errMsg string) {    errs := err.(validator.ValidationErrors)    for _, err := range errs {        errMsg = err.Translate(trans)    }    return}

struct配置如下:

    Name  string `json:"name" validate:"required" label:"路由name"`

此时返回的内容为:

路由name为必填字段

测验代码如下:

var menu model.SysMenu_ = c.ShouldBindJSON(&menu)if err := utils.Validate.Struct(menu); err != nil {        response.FailWithMessage(utils.Translate(err), c)        return}

坑点:
当我想应用required_if进行判断时候,发现v10库没有加上required_if这个标签,那么你须要自定义:

//自定义required_if谬误内容    Validate.RegisterTranslation("required_if", trans, func(ut ut.Translator) error {        return ut.Add("required_if", "{0}为必填字段!", false) // see universal-translator for details    }, func(ut ut.Translator, fe validator.FieldError) string {        t, _ := ut.T("required_if", fe.Field())        return t    })