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
tokarchuk/v1.17
Gusted 3 years ago committed by GitHub
parent a3efd048a7
commit ed23a6c397
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      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)

Loading…
Cancel
Save