Go Gin での構造体タグ検証のエラー メッセージのカスタマイズ
Go の人気のある Web フレームワークである Gin は、 go-playground/validator/ を利用します。構造体の検証には v10。検証が失敗すると、通常、詳細なエラー メッセージが返されます。この記事では、これらのメッセージをカスタマイズして、よりユーザー フレンドリーなエクスペリエンスを提供する方法について説明します。
エラーの種類について理解する
Gin の検証によって返されるエラーは、validator.ValidationErrors 。このエラー タイプには、validator.FieldErrors のコレクションが含まれており、それぞれが無効なフィールドとその検証タグを表します。
エラー メッセージのカスタマイズ
エラー メッセージをカスタマイズするには、次のことができます。 error.As 関数を使用して、validator.ValidationErrors をエラーに変換します。変換後は、個々の validator.FieldErrors にアクセスし、使用された検証タグに基づいてカスタム エラー メッセージを構築できます。
カスタム エラー モデルの作成
まず、定義します。カスタム エラー モデル (例:
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 "" }
検証エラーのバインドと処理
ハンドラー関数で、リクエストを構造体にバインドし、検証をチェックできます。エラー:
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 }
出力例
このカスタム エラー処理を使用すると、次の形式の JSON 応答を返すことができます:
{ "errors": [ { "Field": "Number", "Msg": "This field is required" } ] }
これにより、よりユーザーフレンドリーで有益なエラー応答がユーザーに提供されます。
以上がGo Jin の Struct タグ検証からのエラー メッセージをカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。