validate

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 14, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package validate 提供基于 go-playground/validator 的多语言验证器包装器,支持自定义验证规则和错误消息翻译。

Index

Constants

View Source
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 LangFlag

type LangFlag = string

语言标志类型

func GetDefaultLang

func GetDefaultLang() LangFlag

GetDefaultLang 获取默认语言

type RegisterValidatorTagFunc

type RegisterValidatorTagFunc func(*Wrap) error

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) GetLangList

func (vw *Wrap) GetLangList() []LangFlag

GetLangList 获取全部语言列表

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

func (vw *Wrap) GetValidate(lang ...LangFlag) *validator.Validate

GetValidate 获取指定语言的验证器

func (*Wrap) GetValidators

func (vw *Wrap) GetValidators() map[LangFlag]*validator.Validate

GetValidators 获取全部语言的验证器

func (*Wrap) RegisterCustomTags

func (vw *Wrap) RegisterCustomTags(tagRegisters []RegisterValidatorTagFunc) []error

RegisterCustomTags validate.getRegisterFuncList 获取注册函数列表参数

func (*Wrap) RegisterLangFlag

func (vw *Wrap) RegisterLangFlag(langFlag LangFlag)

RegisterLangFlag 注册语言标志到语言列表

func (*Wrap) RegisterTranslator

func (vw *Wrap) RegisterTranslator(langFlag LangFlag, translator ut.Translator)

RegisterTranslator 注册指定语言的翻译器

func (*Wrap) RegisterValidator

func (vw *Wrap) RegisterValidator(langFlag LangFlag, validator *validator.Validate)

RegisterValidator 注册指定语言的验证器

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 注册中文(繁体)验证器和翻译器到包装器

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL