構造体タグ検証からのエラー メッセージのカスタマイズ
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 サイトの他の関連記事を参照してください。