[英]Golang Validator with custom structs
我正在尝试使用 Golang 验证器( https://godoc.org/gopkg.in/go-playground/validator.v9 )来验证请求正文。 我有两个实体,规则和项目。 Item 实体依赖于 Rule 实体。
type Rule struct {
RuleNo int64 `json:"ruleNo" db:"rule_no"`
Category string `json:"category" db:"category" validate:"alphanum"`
CreatedAt time.Time `json:"createdAt" db:"created_at"`
UpdatedAt time.Time `json:"updatedAt" db:"updated_at"`
}
type Item struct {
SeqNo int64 `json:"-" db:"item_restriction_no"`
ItemId string `json:"itemId" db:"item_id" validate:"alphanum"`
ItemType string `json:"itemType" db:"item_type" validate:"alphanum"`
Rules []Rule `json:"rules" db:"rules"` // how to validate this field?
CreatedAt time.Time `json:"createdAt" db:"created_at"`
UpdatedAt time.Time `json:"updatedAt" db:"updated_at"`
}
如何验证请求正文是否具有 Item 结构的“规则”字段的规则列表? 这是我的验证 function:
func (item *Item) Validate() error {
v := validator.New()
if err := v.Struct(item); err != nil {
return err
}
return nil
}
从这里的示例中,您可以执行以下操作:
type Rule struct {
...
}
type Item struct {
...
Rules []Rule `json:"rules" db:"rules" validate:"required"`
...
}
有两种方法可以做到
例子:
Rules []Rule `json:"rules" db:"rules" validate:"gt=2"`
例子:
Rules []Rule `json:"rules" db:"rules" validate:"min=3"`
您可以使用dive告诉验证器深入到一个切片中:
Rules []Rule `json:"rules" db:"rules" validate:"dive"`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.