0

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

所以我觉得用struct tag来验证不是很方便。如本中所述检查变量似乎更合适。但是我遇到了两个问题:

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

  2. 错误对象确实是空的。例如,检查是否需要电子邮件仅显示err.Tag()and err.ActualTag()asrequirederr.Kind()and err.Type()asstring而没有其他内容。验证器是否提供任何使这更方便的东西?

4

1 回答 1

1

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

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

func ValidateRegister(req) {
...
}
于 2020-08-24T15:48:20.257 回答