在Go中添加元素列表的验证



我是golang 的新手

我已经使用golang创建了一个REST服务。我正试图添加validaiton,但我被卡住了。

我有两个类似的结构

type Item struct {
ProductId string `json:"prodId"`
SkuId   string `json:"skuId"`
Qty     string `json:"qty"`
}
type AddItemsRequest struct {
Items []Item `json:"items" validate:"required"`
}

我正在尝试验证AddItemsRequest

我添加了以下代码来处理这个

func (r * Item) Validate() error {
return types.ErrorMap{
"prodId": validation.Validate(&r.ProductId, validation.Required, validation.Length(1, 255)),
"skuId":   validation.Validate(&r.SkuId, validation.Required, validation.Length(1, 255)),
"qty":     validation.Validate(&r.Qty, validation.Required, validation.Length(1, 255)),
}
}
func (r AddItemsRequest) Validate() error {
return validation.ValidateStruct(&r,
validation.Field(&r.Items, validation.Each(is.Alpha))) // Instead of Alpha how to validate each items with my Items rule
}

但我不愿意立即离开。如何添加验证代码,使请求中的项目不为空或为空,并且只有String?

我不知道什么是验证,但我可以使用"github.com/go操场/validator"来解决这个问题。

func main() {
v := validator.New()
v.RegisterValidation("mySlice", func(fl validator.FieldLevel) bool {
sli, ok := fl.Field().Interface().([]string)
if !ok {
return false
}
for i := range sli {
if len(sli[i]) < 5 {
return false
}
}
return true
}, false)
sli := []string{"hello world", "hi", "congratulation"}
err := v.Var(sli, "mySlice")
if err != nil {
panic("check error: " + err.Error())
}
print("ok")
}

最新更新