验证器
概述
xVaild 提供自定义验证器、中文翻译、错误响应处理
验证器
xVaild 基于 go-playground/validator 提供自定义验证器、中文翻译支持和统一错误响应处理。
import xVaild "github.com/bamboo-services/bamboo-base-go/common/validator"核心功能
字段
类型
自定义验证器
字段
类型
快速使用
初始化验证器
func (r *Reg) EngineInit() {
engine := gin.Default()
// 获取 Gin 的验证器
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
// 注册自定义验证器
_ = xVaild.RegisterCustomValidators(v)
// 注册中文翻译器
_ = xVaild.RegisterTranslator(v)
}
}定义请求结构
type CreateUserRequest struct {
// 使用 label 标签定义中文字段名
Username string `json:"username" label:"用户名" binding:"required,min=4,max=20,alphanum_underscore"`
Password string `json:"password" label:"密码" binding:"required,min=8"`
Email string `json:"email" label:"邮箱" binding:"required,email"`
// 使用枚举验证
Role string `json:"role" label:"角色" binding:"required,enum_string=admin user guest"`
// 使用正则验证
Phone string `json:"phone" label:"手机号" binding:"required,regexp=^1[3-9]\\d{9}$"`
}处理验证错误
func CreateUser(ctx *gin.Context) {
var req dto.CreateUserRequest
if err := ctx.ShouldBindJSON(&req); err != nil {
// 自动处理验证错误并返回中文响应
xVaild.HandleValidationError(ctx, err)
return
}
// 业务逻辑...
}错误响应格式
{
"context": "abc123",
"output": "REQUEST_BODY_ERROR",
"code": 40014,
"message": "请求体错误",
"error_message": "用户名格式不正确",
"data": [
{
"field": "username",
"tag": "alphanum_underscore",
"message": "用户名只能包含字母、数字和下划线",
"value": "user@name"
}
]
}