如何在Go Validator中只接受多个字段中的一个


type CoolName struct {
Foo string  `json:"foo"`
Bar string  `json:"bar"`
}

使用Go验证器,我只需要这两个字段中的一个,如果两个字段的内容都已满,则会出现错误。

我使用了required_without,但它只对需要其中一个有所帮助。如果两个字段没有同时包含一个内容,我不知道如何验证。

我刚刚花了一些时间来解决同样的问题,但我似乎已经解决了:

type CoolName struct {
Foo string  `json:"foo" validate:"required_without=Bar,excluded_with=Bar"`
Bar string  `json:"bar" validate:"required_without=Foo,excluded_with=Foo"`
}

这就起到了作用,甚至产生了一些感觉。然而,我发现关于_with/_without标签的文档有点误导:

只有当任何其他指定字段不存在时,验证中的字段必须存在,并且不能为空。

对我来说,这意味着";字段必须存在<>(当且仅当(其他字段不是";。

我已经遵循了这一点并为我工作,参考:https://github.com/go-playground/validator/issues/617

type Auth struct { 
APIKey   string `json:"apiKey" validate:"required_without=Username,required_without=Password"`
Username string `json:"username" validate:"required_without=APIKey"`
Password string `json:"password" validate:"required_without=APIKey"`}

相关内容

  • 没有找到相关文章

最新更新