Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menyesuaikan Mesej Ralat daripada Pengesahan Tag Struct Go Gin?

Bagaimanakah Saya Boleh Menyesuaikan Mesej Ralat daripada Pengesahan Tag Struct Go Gin?

Mary-Kate Olsen
Lepaskan: 2024-12-06 21:25:15
asal
495 orang telah melayarinya

How Can I Customize Error Messages from Go Gin's Struct Tag Validation?

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
}
Salin selepas log masuk

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 ""
}
Salin selepas log masuk

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
}
Salin selepas log masuk

Contoh Output

Menggunakan pengendalian ralat tersuai ini, kami boleh mengembalikan respons JSON dengan format berikut:

{
    "errors": [
        {
            "Field": "Number",
            "Msg": "This field is required"
        }
    ]
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan