Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyesuaikan Mesej Ralat untuk Pengesahan Tag Struktur dalam Gin?

Bagaimanakah Saya Boleh Menyesuaikan Mesej Ralat untuk Pengesahan Tag Struktur dalam Gin?

Susan Sarandon
Susan Sarandonasal
2024-12-23 13:40:33791semak imbas

How Can I Customize Error Messages for Struct Tag Validation in Gin?

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!

Kenyataan:
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