【问题标题】:How to chain validations together using Golang go-playground/validator?如何使用 Golang go-playground/validator 将验证链接在一起?
【发布时间】:2020-08-24 23:48:20
【问题描述】:

我将https://github.com/go-playground/validator 用于 REST API 服务器。我对具有不同验证要求的不同端点使用相同的结构。例如,/users/login 只需要 emailpassword。但是,要创建用户,需要更多信息,例如 firstName

所以我觉得用struct标签来验证不是很方便。按照example 中的描述检查变量似乎更合适。但是我遇到了两个问题:

  1. 我同时检查多个。有没有办法将一系列验证链接在一起?检查结构中的每一个变量,然后检查错误使得代码更难编码,也更难阅读。

  2. 错误对象确实是空的。例如,检查是否需要电子邮件仅将err.Tag()err.ActualTag() 显示为requirederr.Kind()err.Type() 显示为string,仅此而已。验证器是否提供任何使这更方便的东西?

【问题讨论】:

    标签: validation go go-playground


    【解决方案1】:

    我使用ozzo-validation。它使用正常的编程结构而不是容易出错的结构标记来指定应如何验证数据。 我建议您为每个用例(请求)定义不同的验证函数/方法。

    func ValidateLogin(req) {
    err := validation.Validate(req.Username,
            validation.Required,       // 
            is.Email)
    ...
    }
    
    func ValidateRegister(req) {
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-04
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 2022-10-15
      • 1970-01-01
      • 2018-02-22
      • 2021-04-10
      相关资源
      最近更新 更多