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

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

Susan Sarandon
リリース: 2024-12-23 13:40:33
オリジナル
784 人が閲覧しました

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

Gin での構造体タグ検証のカスタム エラー メッセージの書式設定

Gin で構造体の検証を実行すると、返されるデフォルトのエラー メッセージが冗長で、内容が不足しています使いやすさ。この記事では、エラー メッセージをカスタマイズし、より管理しやすい形式で表示するためのソリューションを提供します。

go-playground/validator/v10 パッケージを使用して、Gin は struct タグを通じて検証を確立します。検証が失敗した場合、返されるエラーは 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 を定義して、検証に基づいてカスタム エラー メッセージを提供できます。 tag:

func msgForTag(tag string) string {
    switch tag {
    case "required":
        return "This field is required"
    case "email":
        return "Invalid email"
    }
    return ""
}
ログイン後にコピー

このアプローチにより、よりユーザーフレンドリーなエラー形式が可能になり、検証エラーをエンドユーザーに伝えやすくなります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート