我尝试使用golang验证器包
https://pkg.go.dev/github.com/go-playground/validator/v10
有没有办法屏蔽返回错误的字段?下面的示例,假设我有一个如下所示的结构,用于执行结构验证
type signinuserdata struct { email string `json:"email" validate:"required"` password string `json:"password" validate:"required"` }
如果我的错误是这样映射的:
validationErrors := err.(validator.ValidationErrors) for _, fieldError := range validationErrors { fmt.println(fieldError.Field()) }
我得到字段名称,例如“电子邮件”或“密码”。我希望返回的是字段的其他名称,例如 “电子邮件” 变为 “电子邮件地址”,或 “密码” 变为“秘密”。
有办法吗?谢谢..
您可以使用 (*validate).registertagnamefunc 注册一个函数来获取 structfields 的备用名称。
例如,注册一个函数以从 name
标签获取备用名称:
package main import ( "fmt" "reflect" "github.com/go-playground/validator/v10" ) type SignInUserData struct { Email string `json:"email" validate:"required" name:"Email Address"` Password string `json:"password" validate:"required" name:"Secret"` } func main() { validate := validator.New() validate.RegisterTagNameFunc(func(field reflect.StructField) string { return field.Tag.Get("name") }) data := &SignInUserData{} err := validate.Struct(data) if err != nil { validationErrors, ok := err.(validator.ValidationErrors) if ok { for _, fieldError := range validationErrors { fmt.Println(fieldError.Field()) } } } }