Handler creates a gin middleware for handling errors.
()
| 13 | |
| 14 | // Handler creates a gin middleware for handling errors. |
| 15 | func Handler() gin.HandlerFunc { |
| 16 | return func(c *gin.Context) { |
| 17 | c.Next() |
| 18 | |
| 19 | if len(c.Errors) > 0 { |
| 20 | for _, e := range c.Errors { |
| 21 | switch e.Type { |
| 22 | case gin.ErrorTypeBind: |
| 23 | errs, ok := e.Err.(validator.ValidationErrors) |
| 24 | |
| 25 | if !ok { |
| 26 | writeError(c, e.Error()) |
| 27 | return |
| 28 | } |
| 29 | |
| 30 | var stringErrors []string |
| 31 | for _, err := range errs { |
| 32 | stringErrors = append(stringErrors, validationErrorToText(err)) |
| 33 | } |
| 34 | writeError(c, strings.Join(stringErrors, "; ")) |
| 35 | default: |
| 36 | writeError(c, e.Err.Error()) |
| 37 | } |
| 38 | } |
| 39 | } |
| 40 | } |
| 41 | } |
| 42 | |
| 43 | func validationErrorToText(e validator.FieldError) string { |
| 44 | runes := []rune(e.Field()) |
searching dependent graphs…