golang常用库之字段参数验证库-validator使用详解

yizhihongxing

Golang常用库之字段参数验证库-validator使用详解

在 Golang 开发中,字段参数验证是一项重要的任务。一些以数据为中心的应用程序需要处理大量的用户输入、API 调用、HTTP 表单数据和其他数据。但是,如果不对这些数据进行验证和过滤,将难以保障数据安全,从而导致系统损失。而使用 Golang 的验证库-validator,可以使我们的验证和过滤任务更轻松和简单。

Validator 库是什么?

Validator 是一个 Golang 字段参数验证库。它帮助开发人员提供易于使用和强大的数据验证框架,减轻了开发人员验证数据的负担,提高了生产率。Validator 库提供了简单、灵活的 API 接口,可以让你方便地验证和处理不同类型的输入数据,以确保应用程序的兼容性和数据的安全性。

Validator 库用法

1. 安装 Validator 库

要使用 Validator 库,必须首先安装它。你可以使用 go get 命令从 Golang 公共仓库中下载和安装 Validator 库。在终端输入以下命令:

go get gopkg.in/go-playground/validator.v9

2. 定义数据模型

要使用 Validator 库进行数据验证,必须首先定义数据的基本结构。使用 Validator 库,你需要创建一个数据结构与 tag 标记一起使用,标记定义了数据字段的约束和限制。

type User struct {
    Name     string `validate:"required"`
    Email    string `validate:"required,email"`
    Age      int    `validate:"required,gt=1,lte=999"`
    Password string `validate:"required,len=6"`
}

上面的数据结构定义了一个 User 类型的数据结构,其中包括 Name、Email、Age 和 Password 等字段。每个字段都指定了有关该字段的验证规则。例如,Name 字段使用 validate:"required" 指示它是必需的,Email 字段使用 validate:"required,email" 指示它是必需的且必须是有效的电子邮件地址。

3. 使用 Validator 进行数据验证

在定义了数据结构后,就可以使用 Validator 进行数据验证。Validator 验证程序的入门点是 validator.New() 函数。使用 New() 函数创建一个新的验证器对象,可以使用 Validate() 函数对数据进行验证。

import "gopkg.in/go-playground/validator.v9"

func main() {
    // 创建一个新的验证器
    validate := validator.New()

    // 要验证的数据
    user := User{
        Name:     "John Doe",
        Email:    "john.doe@acme.com",
        Age:      20,
        Password: "secret",
    }

    // 验证数据
    err := validate.Struct(user)
    if err != nil {
        // 处理验证错误
        panic(err)
    }
}

上面的代码使用创建了一个新的验证器对象,并使用定义的 User 数据类型的变量 user 来尝试验证。如果有任何验证错误,程序将抛出一个 Panic 异常,从而使程序中断。

4. 使用 Validator 自定义错误消息

Validator 库还允许你指定自定义错误消息。你可以使用 tag 标记的一些变量来定义自定义错误消息。例如,要使用自定义消息来验证 age 字段的限制,可以按如下方式指定:

type User struct {
    Name     string `validate:"required"`
    Email    string `validate:"required,email"`
    Age      int    `validate:"required,gt=1,lte=999" error:"年龄必须在 1 到 999 年之间!"`
    Password string `validate:"required,len=6"`
}

上面的代码使用 error:"年龄必须在 1 到 999 年之间!" 来定义 age 字段的自定义错误消息。

Validator 库代码示例

接下来我们的代码示例将实现如下功能:

定义了一个数据类型 Order,其中包括 Name、Price 和 Discount 等字段。除此之外,还定义了一个 Validator 验证器,并在数据测试用例中进行调用,用以验证数据的正确与否。

package main

import (
    "fmt"
    "gopkg.in/go-playground/validator.v9"
)

type Order struct {
    Name      string `validate:"required,min=5,max=20"`
    Price     int    `validate:"required,gt=0"`
    Discount  int    `validate:"required,gt=0,lte=100"`
    StartTime string `validate:"required,datetime=2006-01-02 15:04:05"`
}

var validate *validator.Validate

func main() {
    validate = validator.New()
    order1 := Order{
        Name:      "MacBook Pro",
        Price:     20000,
        Discount:  30,
        StartTime: "2022-01-02 15:04:05",
    }

    if err := validate.Struct(order1); err != nil {
        fmt.Println("order1 data validation failed!")
        fmt.Println(err)
    } else {
        fmt.Println("order1 data validation succeeded!")
    }

    order2 := Order{
        Name:      "Laptop",
        Price:     0,
        Discount:  120,
        StartTime: "2022-00-02 15:04:05",
    }

    if err := validate.Struct(order2); err != nil {
        fmt.Println("order2 data validation failed!")
        fmt.Println(err)
    } else {
        fmt.Println("order2 data validation succeeded!")
    }
}

上面的代码中,我们使用 Validator 验证器,并对数据模型进行了定义。运行后输出结果为:

order1 data validation succeeded!
order2 data validation failed!
Key: 'Order.Price' Error:Field validation for 'Price' failed on the 'gt' tag
Key: 'Order.Discount' Error:Field validation for 'Discount' failed on the 'lte' tag
Key: 'Order.StartTime' Error:Field validation for 'StartTime' failed on the 'datetime' tag

上述代码正确地验证了我们的订单数据。对于订单 1,价格为正且适当减价。而对于订单 2,价格为 0,并且折扣值过高,不合理。此外,该订单的开始时间不是一个合法的日期时间类型,也不符合我们的要求。因此,Validator 应用程序输出了相应的错误消息。

结论

在这篇文章中,我们已经详细地介绍了 Golang 中常用的字段参数验证库-validator。我们首先讲解了 Validator 的基本概念和用法,然后通过代码示例来源于真实场景的验证数据的过程,展示了如何使用该库验证不同的数据,并通过输出结果进行了验证。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:golang常用库之字段参数验证库-validator使用详解 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • GTA5 PC版股票错乱BUG怎么办 GTA5 PC版股票错乱BUG解决方法

    下面我将为大家详细讲解GTA5 PC版股票错乱BUG的解决攻略。 1. 了解问题 首先,我们要了解这个问题的具体表现。GTA5的PC版在玩股票时,存在一种股票价格错乱的情况,就是明明是某一支股票的名字,但是其价格却对应了另一支股票的价格。这对于股票交易的玩家来说是非常不利的,因此我们需要找到解决这个问题的方法。 2. 解决方法 2.1. 清空游戏缓存 这是解…

    other 2023年6月27日
    00
  • 架设语聊服务器 打造自己的TS聊天平台

    架设语聊服务器 打造自己的TS聊天平台 在本文中,我们将会介绍如何自己架设一个语聊服务器,从而打造自己的TS聊天平台。在开始之前,我们需要掌握以下几个知识点: 了解服务器端的操作系统及相关网络知识 了解如何使用命令行界面进行操作 了解如何安装配置Node.js 接下来,我们将通过以下步骤来展开: 步骤一:安装Node.js 在开始架设语聊服务器之前,必须安装…

    other 2023年6月27日
    00
  • C#/.Net 中快速批量给SQLite数据库插入测试数据

    以下是使用C#/.Net快速批量给SQLite数据库插入测试数据的完整攻略: 步骤1:安装SQLite数据库驱动程序 在C#/.Net项目中使用SQLite数据库之前,需要先安装SQLite数据库驱动程序。可以通过NuGet包管理器安装System.Data.SQLite包。 步骤2:创建SQLite数据库连接 在C#/.Net代码中,首先需要创建SQLit…

    other 2023年10月16日
    00
  • 如何进入到docker容器内部

    当我们需要进入到Docker容器内部时,可以使用docker exec命令。下面是进入Docker容器内部的详细步骤: 首先,我们需要确认Docker容器正在运行。可以使用docker ps命列出正在运的容器。如果容器没有运行,可以使用docker start命令启动容器。 然后,我们可以使用docker exec命令进入到容器内部。以下是docker ex…

    other 2023年5月8日
    00
  • Fiddler死活抓不了HTTPS包解决方法

    如果Fiddler无法抓取HTTPS包,可以使用以下步骤进行解决: 步骤一:安装Fiddler根证书 首先确保已安装Fiddler根证书。在Fiddler菜单栏中,点击”Tools”,然后选择”Options”。在弹出的窗口中选择”HTTPS”,勾选”Decrypt HTTPS traffic”。点击”Actions”,选择”Export Root Cert…

    other 2023年6月27日
    00
  • 用FileZilla server搭建FTP服务器的图文教程附相关问题解决方法

    使用FileZilla Server搭建FTP服务器的图文教程 什么是FTP服务器? FTP是File Transfer Protocol的缩写,意为“文件传输协议”。FTP服务器就是提供FTP服务的服务器,可以通过FTP协议来进行文件传输或与FTP客户端进行交互。 FileZilla Server的安装 首先,下载FileZilla Server软件,并进…

    other 2023年6月27日
    00
  • python3判断IP地址的方法

    Python3判断IP地址的方法攻略 在Python3中,我们可以使用正则表达式或者第三方库来判断一个字符串是否为合法的IP地址。下面是详细的攻略,包含两个示例说明。 方法一:使用正则表达式 正则表达式是一种强大的工具,可以用来匹配字符串中的模式。我们可以使用正则表达式来判断一个字符串是否为合法的IP地址。 import re def is_valid_ip…

    other 2023年7月30日
    00
  • Win10怎么设置pdf/psd格式图片的默认查看方式?

    要设置 Win10 中 PDF 或 PSD 格式图片的默认查看方式,可以按照以下步骤进行: 打开“设置”窗口。可以通过在“开始菜单”中搜索“设置”或者使用快捷键“Win + I”打开。 选择“应用”选项卡,然后在左侧菜单中选择“默认应用”。 在“默认应用”页面中,向下滚动并找到“.pdf”或“.psd”格式的文件类型。 点击对应的文件类型后面的“Micros…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部