Home >Backend Development >Golang >How Can I Customize Error Messages for Struct Tag Validation in Gin?
Custom Error Message Formatting for Struct Tag Validation in Gin
When performing struct validation in Gin, the default error message returned is verbose and lacks user-friendliness. This article provides a solution to customize the error message and present it in a more manageable format.
Using the go-playground/validator/v10 package, Gin establishes validation through struct tags. When validation fails, the error returned is a validator.ValidationErrors type. To extract specific error information, one can utilize the standard errors package.
Assuming a custom error model as follows:
type ApiError struct { Field string Msg string }
The following code snippet demonstrates how to customize the error message:
var u User err := c.BindQuery(&u); if err != nil { var ve validator.ValidationErrors if errors.As(err, &ve) { out := make([]ApiError, len(ve)) for i, fe := range ve { out[i] = ApiError{fe.Field(), msgForTag(fe.Tag())} } c.JSON(http.StatusBadRequest, gin.H{"errors": out}) } return }
A helper function, msgForTag, can be defined to provide custom error messages based on the validation tag:
func msgForTag(tag string) string { switch tag { case "required": return "This field is required" case "email": return "Invalid email" } return "" }
This approach allows for more user-friendly error formatting, making it easier to communicate validation errors to the end-user.
The above is the detailed content of How Can I Customize Error Messages for Struct Tag Validation in Gin?. For more information, please follow other related articles on the PHP Chinese website!