Kaynağa Gözat

Merge pull request #1585 from porter-dev/belanger/detail-json-error

Modify JSON decoder error to include error details
abelanger5 4 yıl önce
ebeveyn
işleme
665291ee09

+ 5 - 3
api/server/shared/apierrors/errors.go

@@ -3,6 +3,7 @@ package apierrors
 import (
 	"encoding/json"
 	"net/http"
+	"strings"
 
 	"github.com/porter-dev/porter/api/server/shared/config"
 	"github.com/porter-dev/porter/api/types"
@@ -68,10 +69,11 @@ func (e *ErrForbidden) GetStatusCode() int {
 type ErrPassThroughToClient struct {
 	err        error
 	statusCode int
+	errDetails []string
 }
 
-func NewErrPassThroughToClient(err error, statusCode int) RequestError {
-	return &ErrPassThroughToClient{err, statusCode}
+func NewErrPassThroughToClient(err error, statusCode int, details ...string) RequestError {
+	return &ErrPassThroughToClient{err, statusCode, details}
 }
 
 func (e *ErrPassThroughToClient) Error() string {
@@ -79,7 +81,7 @@ func (e *ErrPassThroughToClient) Error() string {
 }
 
 func (e *ErrPassThroughToClient) InternalError() string {
-	return e.err.Error()
+	return e.err.Error() + strings.Join(e.errDetails, ",")
 }
 
 func (e *ErrPassThroughToClient) ExternalError() string {

+ 1 - 1
api/server/shared/requestutils/decoder.go

@@ -70,7 +70,7 @@ func requestErrorFromJSONErr(err error) apierrors.RequestError {
 	} else if errors.As(err, &typeErr) {
 		clientErr = fmt.Errorf("Invalid type for body param %s: expected %s, got %s", typeErr.Field, typeErr.Type.Kind().String(), typeErr.Value)
 	} else {
-		clientErr = fmt.Errorf("Could not parse JSON request")
+		return apierrors.NewErrPassThroughToClient(fmt.Errorf("Could not parse JSON request"), http.StatusBadRequest, err.Error())
 	}
 
 	return apierrors.NewErrPassThroughToClient(clientErr, http.StatusBadRequest)