有没有办法获取每个失败验证的错误列表? 目前,我只收到一个错误,并且来自第一个失败的验证。
我正在使用 golang 和验证器 v10
type User struct {
ID string `param:"id" json:"id" validate:"required"`
Name string `json:"name" validate:"required,max=100"`
Permissions []string `json:"permissions" validate:"permission_list,distinct_list"`
}
因此,如果字段权限在两者上都失败,我可以得到结果:
{
"validationErrors": {
"permissions": [
"permissions must be a list of valid permissions",
"permissions must be uniques",
]
}
}
您需要检查返回的错误。
package main
import (
"fmt"
"github.com/go-playground/validator/v10"
)
type User struct {
FirstName string `validate:"required"`
LastName string `validate:"required"`
}
func main() {
testUser := User{}
v := validator.New()
if err := v.Struct(testUser); err != nil {
validationErrors := err.(validator.ValidationErrors)
for _, validationError := range validationErrors {
fmt.Println(validationError.Error())
}
}
}
例: https://play.golang.com/p/HFdHrPKiYwF
检查 https://github.com/go-playground/validator/blob/master/errors.go 上的代码,了解ValidationErrors
和FieldError
上可用的方法。
如果您需要的不仅仅是检查一个验证条件然后返回它,而是需要检查每个失败的验证,您需要对包进行一些增强,就像我的情况一样。我需要从第 480 行validator.go
源中删除return
语句