Documentation
¶
Overview ¶
Package validate 提供基于 go-playground/validator 的多语言验证器包装器,支持自定义验证规则和错误消息翻译。
Index ¶
- Constants
- type EnValidate
- type LangFlag
- type RegisterValidatorTagFunc
- type ValidateChecker
- type ValidateInitializer
- type ValidateRegister
- type ValidateWrapper
- type Wrap
- func (vw *Wrap) Errors(errs validator.ValidationErrors, lang LangFlag, snakeCase ...bool) *exception.ValidateException
- func (vw *Wrap) ErrorsMap(errsMap map[string]interface{}, lang LangFlag, snakeCase ...bool) *exception.ValidateException
- func (vw *Wrap) ErrorsVar(errs validator.ValidationErrors, varName string, lang LangFlag, ...) *exception.ValidateException
- func (vw *Wrap) GetLangList() []LangFlag
- func (vw *Wrap) GetTranslator(lang ...LangFlag) ut.Translator
- func (vw *Wrap) GetTranslators() map[LangFlag]ut.Translator
- func (vw *Wrap) GetValidate(lang ...LangFlag) *validator.Validate
- func (vw *Wrap) GetValidators() map[LangFlag]*validator.Validate
- func (vw *Wrap) RegisterCustomTags(tagRegisters []RegisterValidatorTagFunc) []error
- func (vw *Wrap) RegisterLangFlag(langFlag LangFlag)
- func (vw *Wrap) RegisterTranslator(langFlag LangFlag, translator ut.Translator)
- func (vw *Wrap) RegisterValidator(langFlag LangFlag, validator *validator.Validate)
- type ZhCNValidate
- type ZhTWValidate
Constants ¶
const ( DefaultLang = "en" LangZhCN = "zh-cn" LangZhTW = "zh-tw" LangEn = "en" )
全局validate在并发中不同语言翻译是否被重用
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EnValidate ¶
type EnValidate struct {
// contains filtered or unexported fields
}
EnValidate 英文验证器
func NewEnValidate ¶
func NewEnValidate() *EnValidate
func (*EnValidate) RegisterToWrap ¶
func (v *EnValidate) RegisterToWrap(wrap *Wrap)
RegisterToWrap 注册英文验证器和翻译器到包装器
type RegisterValidatorTagFunc ¶
RegisterValidatorTagFunc 是一个函数类型,用于注册自定义的校验标签
type ValidateChecker ¶
type ValidateChecker interface {
// 接受可变数量的参数,该可变参数可以是验证器包装器对象或其他可用于验证处理的参数
Check(...interface{}) error
}
ValidateChecker 定义了一个接口,包含一个 Check 方法。该方法接受可变数量的参数,并返回一个错误。实现该接口的类型可以用于执行自定义的校验逻辑
type ValidateInitializer ¶
type ValidateInitializer func() ValidateRegister
ValidateInitializer 定义了一个函数类型,该函数返回一个 ValidateRegister 接口,用于初始化校验注册器
func GetEnValidateInitializer ¶
func GetEnValidateInitializer() ValidateInitializer
GetEnValidateInitializer 获取英文验证器初始化器
func GetZhCNValidateInitializer ¶
func GetZhCNValidateInitializer() ValidateInitializer
GetZhCNValidateInitializer 获取中文验证器初始化器
func GetZhTWValidateInitializer ¶
func GetZhTWValidateInitializer() ValidateInitializer
type ValidateRegister ¶
type ValidateRegister interface {
RegisterToWrap(wrap *Wrap)
}
ValidateRegister 是一个接口,要求实现 RegisterToWrap 方法。该方法接收一个 *Wrap 类型的参数,用于注册相关逻辑。此接口用于扩展校验注册功能,便于自定义校验器的集成
type ValidateWrapper ¶
type ValidateWrapper interface {
GetValidate(lang ...LangFlag) *validator.Validate
GetTranslator(lang ...LangFlag) ut.Translator
GetValidators() map[string]*validator.Validate
GetTranslators() map[string]ut.Translator
RegisterCustomTags(tagRegisters []RegisterValidatorTagFunc) []error
GetLangList() []LangFlag
Errors(errs validator.ValidationErrors, lang LangFlag, snakeCase ...bool) *exception.ValidateException
ErrorsVar(errs validator.ValidationErrors, varName string, lang LangFlag, snakeCase ...bool) *exception.ValidateException
ErrorsMap(errsMap map[string]interface{}, lang LangFlag, snakeCase ...bool) *exception.ValidateException
RegisterValidator(langFlag LangFlag, validator *validator.Validate)
RegisterTranslator(langFlag LangFlag, translator ut.Translator)
RegisterLangFlag(langFlag LangFlag)
}
验证包装器接口,非并发读写安全
type Wrap ¶
type Wrap struct {
// contains filtered or unexported fields
}
Wrap 验证器包装器,包含多语言的验证器和翻译器,非并发读写安全 推荐应用启动阶段初始化和注册好所需语言验证器,运行时阶段只读
func NewWrap ¶
func NewWrap(cfg appconfig.IAppConfig) *Wrap
NewWrap 创建并初始化验证器包装器,根据配置文件语言标志设置对应的验证器和翻译器,未设置则使用默认英文。
func (*Wrap) Errors ¶
func (vw *Wrap) Errors(errs validator.ValidationErrors, lang LangFlag, snakeCase ...bool) *exception.ValidateException
Errors 用于针对验证器验证[结构体]输入参数的错误返回对应语言的错误信息的处理,返回框架统一的错误响应结构
lang := "zh-tw"
vw := NewWrap(config)
if errVW := vw.GetValidate(lang).Struct(&req); errVW != nil {
var errs validator.ValidationErrors
if errors.As(errVW, &errs) {
return vw.Errors(errs, lang, true)
}
}
func (*Wrap) ErrorsMap ¶
func (vw *Wrap) ErrorsMap(errsMap map[string]interface{}, lang LangFlag, snakeCase ...bool) *exception.ValidateException
ErrorsMap 用于依据动态验证map规则验证组合的map字段的错误处理,返回框架统一的错误响应结构 * Usage: vw := NewWrap(config)
vMap := fiber.Map{
"PriceRate": req.PriceRate,
"Currency": req.Currency,
}
vRule := fiber.Map{
"PriceRate": "required,numeric",
"Currency": "required,len=3",
}
if errsMap := vw.GetValidate(lang).ValidateMap(vMap, vRule); len(errsMap) > 0 {
return vw.ErrorsMap(errsMap, lang, true)
}
func (*Wrap) ErrorsVar ¶
func (vw *Wrap) ErrorsVar(errs validator.ValidationErrors, varName string, lang LangFlag, snakeCase ...bool) *exception.ValidateException
ErrorsVar 用于动态验证指定的变量,手动指定变量名称参数,作为验证字段名称输出错误信息的处理,返回框架统一的错误响应结构
Usage:
lang := "zh-tw"
validateRule := "required,min=20,max=500"
vw := NewWrap(config)
if errsVar := vw.GetValidate(lang).Var(req.SomeAttrName, validateRule); errsVar != nil {
var errs validator.ValidationErrors
if errors.As(errsVar, &errs) {
return vw.ErrorsVar(errs, "SomeAttrName", lang, true)
}
}
func (*Wrap) GetTranslator ¶
func (vw *Wrap) GetTranslator(lang ...LangFlag) ut.Translator
GetTranslator 获取翻译器,用于错误处理时返回包含翻译消息的异常
func (*Wrap) GetTranslators ¶
func (vw *Wrap) GetTranslators() map[LangFlag]ut.Translator
GetTranslators 获取全部语言的翻译器
func (*Wrap) GetValidate ¶
GetValidate 获取指定语言的验证器
func (*Wrap) GetValidators ¶
GetValidators 获取全部语言的验证器
func (*Wrap) RegisterCustomTags ¶
func (vw *Wrap) RegisterCustomTags(tagRegisters []RegisterValidatorTagFunc) []error
RegisterCustomTags validate.getRegisterFuncList 获取注册函数列表参数
func (*Wrap) RegisterLangFlag ¶
RegisterLangFlag 注册语言标志到语言列表
func (*Wrap) RegisterTranslator ¶
func (vw *Wrap) RegisterTranslator(langFlag LangFlag, translator ut.Translator)
RegisterTranslator 注册指定语言的翻译器
type ZhCNValidate ¶
type ZhCNValidate struct {
// contains filtered or unexported fields
}
ZhCNValidate 中文验证器
func NewZhCNValidate ¶
func NewZhCNValidate() *ZhCNValidate
func (*ZhCNValidate) RegisterToWrap ¶
func (v *ZhCNValidate) RegisterToWrap(wrap *Wrap)
RegisterToWrap 注册中文(简体)验证器和翻译器到包装器
type ZhTWValidate ¶
type ZhTWValidate struct {
// contains filtered or unexported fields
}
ZhTWValidate 中文(繁体)验证器
func NewZhTWValidate ¶
func NewZhTWValidate() *ZhTWValidate
func (*ZhTWValidate) RegisterToWrap ¶
func (v *ZhTWValidate) RegisterToWrap(wrap *Wrap)
RegisterToWrap 注册中文(繁体)验证器和翻译器到包装器