refactor(valid): 使用Gin内置验证器替代手动创建实例

移除ApiResponse结构体并改用Gin绑定的validator实例,确保验证器与翻译器的一致性
This commit is contained in:
2026-02-03 17:21:58 +08:00
parent d549cf929b
commit 8743f40739
2 changed files with 587 additions and 8 deletions
+6 -8
View File
@@ -5,6 +5,7 @@ import (
"reflect"
"strings"
"github.com/gin-gonic/gin/binding"
"github.com/go-playground/locales/zh"
ut "github.com/go-playground/universal-translator"
"github.com/go-playground/validator/v10"
@@ -18,13 +19,6 @@ var (
found bool
)
// -------------------------- 统一响应格式 --------------------------
type ApiResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data interface{} `json:"data"`
}
// -------------------------- 初始化全局验证器+中文翻译器(关键:与Gin关联) --------------------------
func init() {
// 1. 初始化中文本地化
@@ -40,7 +34,11 @@ func init() {
// 3. 关键:获取 Gin 内置的 validator 实例(而非手动创建 new(validator.Validate))
// 保证 Gin 绑定参数时使用的是我们注册了翻译的这个验证器
validate = validator.New()
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
validate = v
} else {
panic("获取 Gin 内置验证器失败")
}
// 4. 注册中文翻译(核心:将验证器与中文翻译器绑定)
err = zh_translations.RegisterDefaultTranslations(validate, trans)