Я пытаюсь проверить эту структуру, мои данные - это объект с одним свойством объекта, у этого может быть несколько объектов со своими собственными свойствами, когда я отправляю данные, govalidator отвечает с ошибкой. Я использую эту библиотеку https://github.com/thedevsaddam/govalidator
Это моя структура:
type Receta struct {
RecetaID int `json:"RecetaId"`
RecetaNombre string `json:"RecetaNombre"`
RecetaCodigo string `json:"RecetaCodigo"`
RecetaCategoria string `json:"RecetaCategoria"`
RecetaSub string `json:"RecetaSub"`
ListaReceta []ListaReceta
}
type Recetas []Receta
type ListaReceta struct {
IDInsumo int `json:"idInsumo"`
RecetaID int `json:"RecetaId"`
NombreInsumo string `json:"nombreInsumo"`
UniddcmpraInsumo string `json:"uniddcmpraInsumo"`
Tipo string `json:"tipo"`
Inicial string `json:"inicial"`
}
Это моя функция для проверки:
func (p *Api) CreateReceta(w http.ResponseWriter, r *http.Request) {
rules := govalidator.MapData{
"RecetaNombre": []string{"between:0,15"},
"RecetaCodigo": []string{"required", "between:0,30"},
"RecetaCategoria": []string{"between:0,12"},
"RecetaSub": []string{"between:0,12"},
"idInsumo": []string{"between:0,12"},
"nombreInsumo": []string{"between:0,12"},
"uniddcmpraInsumo": []string{"between:0,12"},
"tipo": []string{"between:0,12"},
"inicial": []string{"between:0,12"},
}
messages := govalidator.MapData{
"RecetaNombre": []string{"between:El nombre de este campo debe tener entre 0 a 12"},
"RecetaCodigo": []string{"between:El nombre de este campo debe tener entre 0 a 12"},
"RecetaCategoria": []string{"between:El nombre de este campo debe tener entre 0 a 12"},
"RecetaSub": []string{"between:El nombre de este campo debe tener entre 0 a 12"},
"idInsumo": []string{"between:El nombre de este campo debe tener entre 0 a 12"},
"uniddcmpraInsumo": []string{"between:El nombre de este campo debe tener entre 0 a 12"},
"tipo": []string{"between:El nombre de este campo debe tener entre 0 a 12"},
"inicial": []string{"between:El nombre de este campo debe tener entre 0 a 12"},
"nombreInsumo": []string{"between:El nombre de este campo debe tener entre 0 a 12"},
}
opts := govalidator.Options{
Request: r,
Rules: rules,
Messages: messages,
RequiredDefault: false,
}
v := govalidator.New(opts)
e := v.Validate()
if len(e) != 0 {
errValidate := map[string]interface{}{"validation": e}
respondwithJSON(w, http.StatusBadRequest, errValidate)
return
}
receta := models.Receta{}
r.ParseForm()
receta.RecetaNombre = r.FormValue("RecetaNombre")
receta.RecetaCodigo = r.FormValue("RecetaCodigo")
receta.RecetaCategoria = r.FormValue("RecetaCategoria")
receta.RecetaSub = r.FormValue("RecetaSub")
newID, err := p.repo.CreateRecet(r.Context(), &receta)
fmt.Println(newID)
if err != nil {
respondWithError(w, http.StatusInternalServerError, "Server error")
return
}
id := strconv.Itoa(int(newID))
respondwithJSON(w, http.StatusCreated, map[string]string{"message": "Successfully created", "ID": id})
}
вот как отправляются мои данные: