From ed23a6c39704c329ec4940bfec16739a0d3d3e91 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 22 Nov 2021 13:05:29 +0000 Subject: [PATCH] Make `bind` error more readable (#17750) - Add the related fieldNames into the response JSON, such that the developer can figure out what's going on. - Related: https://github.com/go-gitea/gitea/issues/17126#issuecomment-937848295 --- routers/api/v1/api.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 099559caad..ea653b9677 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -65,6 +65,7 @@ package v1 import ( + "fmt" "net/http" "reflect" "strings" @@ -551,7 +552,7 @@ func bind(obj interface{}) http.HandlerFunc { var theObj = reflect.New(tp).Interface() // create a new form obj for every request but not use obj directly errs := binding.Bind(ctx.Req, theObj) if len(errs) > 0 { - ctx.Error(http.StatusUnprocessableEntity, "validationError", errs[0].Error()) + ctx.Error(http.StatusUnprocessableEntity, "validationError", fmt.Sprintf("%s: %s", errs[0].FieldNames, errs[0].Error())) return } web.SetForm(ctx, theObj)