Home > Backend Development > Golang > How Can I Customize Error Messages for Struct Tag Validation in Gin?

How Can I Customize Error Messages for Struct Tag Validation in Gin?

Susan Sarandon
Release: 2024-12-23 13:40:33
Original
788 people have browsed it

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
}
Copy after login

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
}
Copy after login

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 ""
}
Copy after login

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template