Struct タグを使用した検証エラー メッセージのカスタマイズ
Gin を使用した Go Web 開発では、構造体の検証は、永続化の前にデータの整合性を確保する上で重要な役割を果たします。 。ただし、基礎となる検証ライブラリによって提供されるデフォルトのエラー メッセージは冗長で、ユーザーフレンドリーではない場合があります。この記事では、構造体タグに基づいてカスタム エラー メッセージを返し、開発者がより意味のある実用的なフィードバックをユーザーに提供できるようにする方法について説明します。
Validator.ValidationErrors について
Gin の活用検証用の github.com/go-playground/validator/v10 ライブラリ。検証が失敗すると、validator.ValidationErrors タイプのエラーが返されます。このエラー タイプには、無効なフィールドを表す validator.FieldError インスタンスのスライスが含まれています。
エラー メッセージのカスタマイズ
エラー メッセージをカスタマイズするには、バリデーターをラップ解除します。エラー パッケージを使用して ValidationErrors エラーを検出し、validator.FieldError にアクセスして、フィールドのタグに基づいてカスタム エラー メッセージを作成します。構造体フィールドのタグ属性を使用すると、開発者はカスタム検証ルールとエラー メッセージを指定できます。
たとえば、次のコード スニペットを考えてみましょう。
type ApiError struct { Field string Msg string } func msgForTag(tag string) string { switch tag { case "required": return "This field is required" case "email": return "Invalid email" } return "" }
このコードは、ApiError 構造体とヘルパーを定義します。タグをカスタム エラー メッセージにマップする関数 msgForTag。これらを使用すると、次のハンドラーを実装できます。
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 }
このハンドラーでは、validator.ValidationErrors エラーがラップ解除され、各 validator.FieldError がフィールドのタグに基づくカスタム メッセージを含む ApiError に変換されます。 。次に、ApiError のスライスが JSON エンコードされ、フィールドに対応する動的キーを含むエラー応答として返されます。
結論
構造体タグを使用して検証エラー メッセージをカスタマイズする、開発者はデータ検証中に、よりユーザーフレンドリーで有益なフィードバックを提供できます。このアプローチにより、ユーザー エクスペリエンスが向上し、デバッグ プロセスが簡素化され、入力エラーの特定と修正が容易になります。
以上がStructタグを使用してGoで検証エラーメッセージをカスタマイズする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。