Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyesuaikan Mesej Ralat daripada Pengesahan Tag Struct Go Gin?
Menyesuaikan Mesej Ralat untuk Pengesahan Tag Struktur dalam Go Gin
Gin, rangka kerja web popular untuk Go, menggunakan go-playground/validator/ v10 untuk pengesahan struktur. Apabila pengesahan gagal, ia biasanya mengembalikan mesej ralat verbose. Artikel ini meneroka cara untuk menyesuaikan mesej ini untuk memberikan pengalaman yang lebih mesra pengguna.
Memahami Jenis Ralat
Ralat yang dikembalikan oleh pengesahan Gin ialah pengesah.ValidationErrors . Jenis ralat ini mengandungi koleksi pengesah.FieldErrors, setiap satu mewakili medan yang tidak sah dan teg pengesahannya.
Menyesuaikan Mesej Ralat
Untuk menyesuaikan mesej ralat, kami boleh tukar validator.ValidationErrors to error using the errors.As function. Setelah ditukar, kami boleh mengakses pengesah individu.FieldErrors dan membina mesej ralat tersuai berdasarkan teg pengesahan yang digunakan.
Mencipta Model Ralat Tersuai
Pertama, kami tentukan model ralat tersuai, seperti:
type ApiError struct { Field string Msg string }
Ralat Penyesuaian Mesej untuk Teg Pengesahan
Seterusnya, kami mentakrifkan fungsi pembantu untuk memetakan teg pengesahan kepada mesej ralat tersuai:
func msgForTag(tag string) string { switch tag { case "required": return "This field is required" case "email": return "Invalid email" } return "" }
Mengikat dan Mengendalikan Ralat Pengesahan
Dalam fungsi pengendali kami, kami boleh mengikat permintaan pada struct kami dan menyemak pengesahan 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 }
Contoh Output
Menggunakan pengendalian ralat tersuai ini, kami boleh mengembalikan respons JSON dengan format berikut:
{ "errors": [ { "Field": "Number", "Msg": "This field is required" } ] }
Ini memberikan respons ralat yang lebih mesra pengguna dan bermaklumat kepada pengguna.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyesuaikan Mesej Ralat daripada Pengesahan Tag Struct Go Gin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!