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 应用程序中的数据验证。通过结构体标签定义验证规则,使得代码简洁易读。您可以根据需要使用内置规则或自定义规则来满足特定的验证需求。

参考文档

如果您有其他问题或需要进一步的帮助,请告诉我!

每日更新-免费小火箭账号
不要错过任何机会,探索最新的应用和游戏,就在我们的平台。
立即访问
最后修改:2024 年 12 月 28 日
如果觉得我的文章对你有用,请随意赞赏