ホームページ >バックエンド開発 >Golang >Gin の Struct タグ検証からのエラー メッセージをカスタマイズするにはどうすればよいですか?

Gin の Struct タグ検証からのエラー メッセージをカスタマイズするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-15 05:42:10517ブラウズ

How to Customize Error Messages from Gin's Struct Tag Validation?

構造体タグ検証からのエラー メッセージのカスタマイズ

Gin では、構造体タグ検証を使用して、データベース挿入前にデータの整合性を確認します。返されるデフォルトのエラーは冗長であり、ユーザーにとって有益ではありません。この記事では、エラー メッセージをカスタマイズして、より意味のある応答を提供する方法について説明します。

Gin は、検証に go-playground/validator/v10 パッケージを利用します。エラーは validator.ValidationErrors として返されます。メッセージをカスタマイズするには、標準エラー パッケージを使用してエラーを展開し、validator.FieldError フィールドにアクセスします。

エラー モデル (ApiError など) を作成して、カスタム エラー メッセージの構造を定義します。例:

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
}

最後に、検証タグをカスタム メッセージにマップするヘルパー関数を定義します:

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

このアプローチを使用すると、フィールド名と検証タグに基づいて調整されたメッセージを使用してエラー メッセージがカスタマイズされます。

以上がGin の Struct タグ検証からのエラー メッセージをカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。