• 深入解析 binding:“required“ 与 validate:“required“ 的区别


    介绍

            在 Go 语言的 Web 开发中,我们经常会遇到参数验证的需求。其中,binding:"required"validate:"required" 是两个常见的标签,但它们具有不同的上下文和用途。本文将深入解析这两个标签,帮助开发者更好地理解它们之间的区别与使用场景。

    binding:"required":用于 Web 框架的参数绑定

    1. 上下文: 主要用于 Web 框架,例如 Gin。
    2. 作用: 在请求参数绑定到结构体时,binding:"required" 标签用于标记相应字段的必需性。如果请求中缺少这些必需字段,框架将返回错误响应。
    1. type User struct {
    2. Username string `json:"username" binding:"required"`
    3. Email string `json:"email" binding:"required"`
    4. }

            在上述示例中,UsernameEmail 字段都被标记为必需字段,如果请求中缺少这些字段,框架会进行相应的错误处理。

    validate:"required":用于数据验证库的字段验证

    1. 上下文: 主要用于数据验证库,例如 go-playground/validator
    2. 作用: 用于标记结构体字段的验证规则,表示该字段的值不能为空。在数据验证库中,validate:"required" 标签会在验证时检查字段是否符合必需性条件。
    1. type User struct {
    2. Username string `json:"username" validate:"required"`
    3. Email string `json:"email" validate:"required"`
    4. }

            在这个例子中,UsernameEmail 字段同样被标记为必需字段,但这次是为了数据验证而不是 Web 框架的参数绑定。 

    区别与使用场景

    1. 上下文:

      • binding:"required" 主要用于 Web 框架,指定请求参数的必需性。
      • validate:"required" 主要用于数据验证库,表示字段值的必需性。
    2. 错误处理:

      • 在 Web 框架中,binding:"required" 通常会导致框架返回 HTTP 400 Bad Request 错误,指示客户端请求参数不合法。
      • 在数据验证库中,validate:"required" 会在验证时产生相应的验证错误,开发者可以根据需要进行进一步的处理。
    3. 使用场景:

      • 使用 binding:"required" 主要是为了确保在 Web 请求中必需的参数存在,适用于 Web 框架的参数绑定。
      • 使用 validate:"required" 则更适合在通用的数据验证场景中,例如对用户输入数据进行验证,确保数据的完整性。

    结论

            虽然 binding:"required"validate:"required" 都涉及参数或字段的必需性,但它们的使用场景和目的不同。理解这两者之间的区别,可以更有效地应用于 Web 开发和数据验证中,提高代码的质量和可维护性。

  • 相关阅读:
    渗透测试-渗透测试常见的总结
    【Linux常用命令10】用户管理和文件权限命令
    【Python爬虫笔记】爬虫代理IP与访问控制
    现在公司都在用的CI/CD框架到底是什么?
    依赖配置与依赖传递
    死链接是如何产生的呢?
    《Java基础知识》Java transient关键字详解
    五分钟k8s实战-使用Ingress
    java.lang.OutOfMemoryError- unable to create new native thread 问题排查
    C#之WPF学习之路(1)
  • 原文地址:https://blog.csdn.net/weixin_41860630/article/details/134482903