Help us shape the future of Go! Take the 2026 Go Developer Survey

validator

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package validator 提供统一的参数验证能力。

基于 go-playground/validator,封装为面向接口的验证门面。 支持 struct tag 验证、自定义规则和结构体验证错误格式化。 HTTP 框架相关的绑定逻辑位于 handler/validatorh。

用法:

type CreateUserReq struct {
    Name  string `json:"name" validate:"required,min=1,max=100"`
    Email string `json:"email" validate:"required,email"`
    Age   int    `json:"age" validate:"gte=0,lte=150"`
}

// 直接验证结构体
err := validator.Validate(&req)

Index

Constants

This section is empty.

Variables

View Source
var ErrTranslationNotSupported = errors.New("validator: translation not supported; messages are built-in via formatMessage")

ErrTranslationNotSupported 表示当前验证器不支持错误消息翻译。 PlaygroundValidator 的错误消息已通过 formatMessage 内置英文提示, 如需自定义消息请扩展 formatMessage 或实现自定义 Validator。

Functions

func IsValidationError

func IsValidationError(err error) bool

IsValidationError 检查错误是否为 ValidationError 类型。

func RegisterTranslation

func RegisterTranslation(locale, tag, msg string) error

RegisterTranslation 注册验证错误的翻译。

func RegisterValidation

func RegisterValidation(tag string, fn Func) error

RegisterValidation 注册自定义验证规则。 ⚠️ 必须在 init 阶段(任何 Struct 校验开始前)调用:底层 go-playground/validator 的注册写内部 map 与校验读并发不安全, 运行期(流量中)注册会构成数据竞争。

func SetDefault

func SetDefault(v Validator)

SetDefault 设置全局默认验证器。

func Validate

func Validate(obj any) error

Validate 验证结构体。

func ValidateVar

func ValidateVar(field any, tag string) error

ValidateVar 验证单个变量。

Types

type FieldError

type FieldError struct {
	Field   string `json:"field"`           // 字段名
	Tag     string `json:"tag"`             // 验证标签
	Param   string `json:"param,omitempty"` // 标签参数
	Message string `json:"message"`         // 错误消息
}

FieldError 表示单个字段的验证错误。

type Func

type Func func(val any) bool

Func 是自定义验证函数。

type PlaygroundValidator

type PlaygroundValidator struct {
	// contains filtered or unexported fields
}

PlaygroundValidator 是基于 go-playground/validator 的验证器实现。

func New

func New() *PlaygroundValidator

New 创建 PlaygroundValidator 实例。

func (*PlaygroundValidator) RegisterTranslation

func (pv *PlaygroundValidator) RegisterTranslation(locale, tag, msg string) error

RegisterTranslation 注册验证错误的翻译。

当前实现不支持翻译引擎:错误消息已通过 formatMessage English prompts via formatMessage。 调用将始终返回 ErrTranslationNotSupported,避免调用方误以为翻译已注册成功。 如需自定义消息,请扩展 formatMessage 或实现自定义 Validator。

func (*PlaygroundValidator) RegisterValidation

func (pv *PlaygroundValidator) RegisterValidation(tag string, fn Func) error

RegisterValidation 注册自定义验证规则。

func (*PlaygroundValidator) Validate

func (pv *PlaygroundValidator) Validate(obj any) error

Validate 验证结构体。

func (*PlaygroundValidator) ValidateVar

func (pv *PlaygroundValidator) ValidateVar(field any, tag string) error

ValidateVar 验证单个变量。

func (*PlaygroundValidator) Validate_

func (pv *PlaygroundValidator) Validate_() *validator.Validate

Validate 底层验证器实例,供高级用户直接使用。

type ValidationError

type ValidationError struct {
	// contains filtered or unexported fields
}

ValidationError 包含多个字段验证错误。 实现 BizError 接口(code=400),handler 层的 Fail 会自动识别为 400 Bad Request。

func AsValidationError

func AsValidationError(err error) (*ValidationError, bool)

AsValidationError 从错误链中提取 ValidationError(支持 errors.As 链式匹配)。

func NewFieldValidationError

func NewFieldValidationError(errors []FieldError) *ValidationError

NewFieldValidationError 创建包含指定字段错误的验证错误。 供 handler/validatorh 等外部包构造 ValidationError。

func (*ValidationError) Error

func (e *ValidationError) Error() string

Error 实现 error 接口,返回第一个错误消息。

func (*ValidationError) Errors

func (e *ValidationError) Errors() []FieldError

Errors 返回所有字段错误。

func (*ValidationError) Len

func (e *ValidationError) Len() int

Len 返回错误数量。

func (*ValidationError) Map

func (e *ValidationError) Map() map[string]string

Map 返回 field→message 映射,适用于 JSON 响应。

func (*ValidationError) String

func (e *ValidationError) String() string

String 实现 fmt.Stringer。

func (*ValidationError) Unwrap

func (e *ValidationError) Unwrap() error

Unwrap 返回底层的 BizError(BizCode=400, HTTPCode=400),使 errors.As 能识别为 BizError。 这样 handler 层的 Fail 会自动返回 400 Bad Request,而非 500。

type Validator

type Validator interface {
	// Validate 验证结构体(基于 struct tag)。
	Validate(obj any) error

	// ValidateVar 验证单个变量。
	ValidateVar(field any, tag string) error

	// RegisterValidation 注册自定义验证规则。
	RegisterValidation(tag string, fn Func) error

	// RegisterTranslation 注册验证错误的翻译。
	RegisterTranslation(locale, tag, msg string) error
}

Validator 是参数验证接口。

func Default

func Default() Validator

Default 获取全局默认验证器。

Jump to

Keyboard shortcuts

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