Pemformatan Mesej Ralat Tersuai untuk Pengesahan Tag Struktur dalam Gin
Apabila melakukan pengesahan struct dalam Gin, mesej ralat lalai yang dikembalikan adalah bertele-tele dan tiada mesra pengguna. Artikel ini menyediakan penyelesaian untuk menyesuaikan mesej ralat dan membentangkannya dalam format yang lebih terurus.
Menggunakan pakej go-playground/validator/v10, Gin menetapkan pengesahan melalui teg struct. Apabila pengesahan gagal, ralat yang dikembalikan ialah validator.ValidationErrors type. Untuk mengekstrak maklumat ralat tertentu, seseorang boleh menggunakan pakej ralat standard.
Dengan mengandaikan model ralat tersuai seperti berikut:
type ApiError struct { Field string Msg string }
Coretan kod berikut menunjukkan cara untuk menyesuaikan mesej ralat:
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 }
Fungsi pembantu, msgForTag, boleh ditakrifkan untuk menyediakan mesej ralat tersuai berdasarkan pengesahan tag:
func msgForTag(tag string) string { switch tag { case "required": return "This field is required" case "email": return "Invalid email" } return "" }
Pendekatan ini membolehkan pemformatan ralat yang lebih mesra pengguna, menjadikannya lebih mudah untuk menyampaikan ralat pengesahan kepada pengguna akhir.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyesuaikan Mesej Ralat untuk Pengesahan Tag Struktur dalam Gin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!