我正在尝试使用 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 结构的“规则”字段的规则列表?这是我的验证功能:func (item *Item) Validate() error { v := validator.New() if err := v.Struct(item); err != nil { return err } return nil}
3 回答
当年话下
TA贡献1890条经验 获得超9个赞
从这里的示例中,您可以执行以下操作:
type Rule struct {
...
}
type Item struct {
...
Rules []Rule `json:"rules" db:"rules" validate:"required"`
...
}
慕仙森
TA贡献1827条经验 获得超8个赞
有两种方法可以做到
大于:对于数字,这将确保该值大于给定的参数。对于字符串,它检查字符串长度是否大于该字符数。对于切片、数组和映射,它会验证项目的数量。
例子:
Rules []Rule `json:"rules" db:"rules" validate:"gt=2"`
最小值:对于数字,min 将确保该值大于或等于给定的参数。对于字符串,它会检查字符串长度是否至少为该字符数。对于切片、数组和映射,验证项目数。
例子:
Rules []Rule `json:"rules" db:"rules" validate:"min=3"`
- 3 回答
- 0 关注
- 145 浏览
添加回答
举报
0/150
提交
取消