>백엔드 개발 >Golang >Gin에서 구조체 태그 유효성 검사에 대한 오류 메시지를 어떻게 사용자 정의할 수 있나요?

Gin에서 구조체 태그 유효성 검사에 대한 오류 메시지를 어떻게 사용자 정의할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-12-23 13:40:33793검색

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

Gin에서 구조체 태그 유효성 검사를 위한 사용자 정의 오류 메시지 형식

Gin에서 구조체 유효성 검사를 수행할 때 반환되는 기본 오류 메시지는 장황하고 부족합니다. 사용자 친화성. 이 기사에서는 오류 메시지를 사용자 정의하고 보다 관리하기 쉬운 형식으로 표시하는 솔루션을 제공합니다.

Gin은 go-playground/validator/v10 패키지를 사용하여 구조체 태그를 통해 유효성 검사를 설정합니다. 유효성 검사가 실패하면 반환되는 오류는 validator.ValidationErrors 유형입니다. 특정 오류 정보를 추출하려면 표준 오류 패키지를 활용할 수 있습니다.

다음과 같이 사용자 정의 오류 모델을 가정합니다.

type ApiError struct {
    Field string
    Msg   string
}

다음 코드 조각은 오류 메시지를 사용자 정의하는 방법을 보여줍니다.

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
}

도우미 함수 msgForTag를 정의하여 유효성 검사를 기반으로 사용자 정의 오류 메시지를 제공할 수 있습니다. 태그:

func msgForTag(tag string) string {
    switch tag {
    case "required":
        return "This field is required"
    case "email":
        return "Invalid email"
    }
    return ""
}

이 접근 방식을 사용하면 보다 사용자 친화적인 오류 형식이 가능하므로 최종 사용자에게 유효성 검사 오류를 더 쉽게 전달할 수 있습니다.

위 내용은 Gin에서 구조체 태그 유효성 검사에 대한 오류 메시지를 어떻게 사용자 정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.