Go Playground Validator 使用教程
介绍
github.com/go-playground/validator/v10
是一个流行的 Go 语言验证库,提供了灵活且强大的验证功能。它允许开发者通过结构体标签定义验证规则,支持多种内置验证规则和自定义验证。
安装
在项目中使用 go-playground/validator
,首先需要安装该库:
go get github.com/go-playground/validator/v10
基本用法
1. 导入包
在您的 Go 文件中导入 validator
包:
import (
"fmt"
"github.com/go-playground/validator/v10"
)
2. 定义结构体
定义一个结构体,并使用结构体标签指定验证规则:
type User struct {
Username string `json:"username" validate:"required,min=3,max=32"`
Email string `json:"email" validate:"required,email"`
Age int `json:"age" validate:"required,gte=0,lte=130"`
}
3. 创建验证器实例
创建一个验证器实例:
validate := validator.New()
4. 验证结构体
使用 validate.Struct()
方法验证结构体实例:
user := User{
Username: "john",
Email: "[email protected]",
Age: 25,
}
err := validate.Struct(user)
if err != nil {
if _, ok := err.(*validator.InvalidValidationError); ok {
fmt.Println("验证错误:", err)
return
}
for _, err := range err.(validator.ValidationErrors) {
fmt.Printf("字段 %s 验证失败: %s\n", err.Field(), err.Tag())
}
} else {
fmt.Println("验证通过")
}
5. 常用验证规则
以下是一些常用的验证规则:
required
:字段是必需的。min=X
:字段的最小长度或值。max=X
:字段的最大长度或值。email
:字段必须是有效的电子邮件地址。url
:字段必须是有效的 URL。gte=X
:字段的值必须大于或等于 X。lte=X
:字段的值必须小于或等于 X。
6. 自定义验证
您可以创建自定义验证规则:
// 自定义验证函数
func validateUsername(fl validator.FieldLevel) bool {
return len(fl.Field().String()) >= 3 && len(fl.Field().String()) <= 32
}
func main() {
validate := validator.New()
validate.RegisterValidation("username", validateUsername)
user := User{
Username: "jo",
Email: "[email protected]",
Age: 25,
}
err := validate.Struct(user)
if err != nil {
for _, err := range err.(validator.ValidationErrors) {
fmt.Printf("字段 %s 验证失败: %s\n", err.Field(), err.Tag())
}
} else {
fmt.Println("验证通过")
}
}
7. 错误处理
验证失败时,返回的错误类型为 validator.ValidationErrors
,可以通过循环遍历获取每个字段的错误信息。
总结
go-playground/validator/v10
是一个功能强大的验证库,适合用于 Go 应用程序中的数据验证。通过结构体标签定义验证规则,使得代码简洁易读。您可以根据需要使用内置规则或自定义规则来满足特定的验证需求。
参考文档
如果您有其他问题或需要进一步的帮助,请告诉我!