validate

package
v0.0.0-...-9f8abe8 Latest Latest
Warning

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

Go to latest
Published: Aug 20, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package validate 提供代码式、无 tag、无反射的请求参数校验规则。

设计约束:

  • 规则是纯函数(Rule[T]),不接收 context,不访问数据库/仓储/外部服务;
  • 不引入 reflect、DSL 或全局注册器;
  • Validate 聚合每个字段的第一条失败规则,HTTP 入口通过 FirstError 只暴露第一条消息。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Field

func Field[T any](name string, value T, rules ...Rule[T]) fieldResult

Field 按声明顺序对单字段短路:返回第一条失败规则的结果。

func FirstError

func FirstError(err error) error

FirstError 返回聚合错误中的第一条消息;非聚合错误原样返回。

func Validate

func Validate(fields ...fieldResult) error

Validate 聚合每个字段的第一条失败规则;全部通过时返回 nil。

Types

type Errors

type Errors []FieldError

Errors 聚合多个字段错误,实现 error 接口。

func (Errors) Error

func (e Errors) Error() string

Error 返回聚合错误文本(所有字段消息以 "; " 连接)。

func (Errors) First

func (e Errors) First() error

First 返回第一条错误消息;空 Errors 返回 nil。 供通用绑定入口只向响应暴露第一条消息,维持既有 msg 行为。

type FieldError

type FieldError struct {
	Field   string
	Message string
}

FieldError 单个字段的校验失败结果。

type Rule

type Rule[T any] func(T) error

Rule 单字段校验规则:value 不合法时返回非 nil error。

func Email

func Email() Rule[string]

Email RFC 5322 单地址校验。

func Max

func Max[T cmp.Ordered](bound T) Rule[T]

Max 数值上界(含边界)。

func MaxItems

func MaxItems[T any](n int) Rule[[]T]

MaxItems 切片元素数上界。

func MaxLen

func MaxLen(n int) Rule[string]

MaxLen 字符串最大长度(按 rune 数,非字节数)。

func Message

func Message[T any](msg string, rule Rule[T]) Rule[T]

Message 保留规则逻辑、替换错误文案。

func Min

func Min[T cmp.Ordered](bound T) Rule[T]

Min 数值下界(含边界)。

func MinItems

func MinItems[T any](n int) Rule[[]T]

MinItems 切片元素数下界。

func MinLen

func MinLen(n int) Rule[string]

MinLen 字符串最小长度(按 rune 数,非字节数)。

func NotZero

func NotZero[T comparable]() Rule[T]

NotZero 拒绝零值;需显式类型参数,如 NotZero[int64]()。

func OneOf

func OneOf[T comparable](options ...T) Rule[T]

OneOf 枚举校验;零值不在集合中即失败(配合 When/Optional 模拟 omitempty)。

func Optional

func Optional[T any](rule Rule[T]) Rule[*T]

Optional nil 指针跳过,显式提供的值仍校验(等价 omitempty 的指针字段)。

func Required

func Required() Rule[string]

Required 拒绝空字符串;不 trim,保持 Gin `required` 的零值语义。

func When

func When[T any](cond bool, rule Rule[T]) Rule[T]

When 条件为真才校验(等价 omitempty 的非指针字段)。

Jump to

Keyboard shortcuts

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