Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyesuaikan Mesej Ralat Pengesahan dalam Go Menggunakan Tag Struct?

Bagaimana untuk Menyesuaikan Mesej Ralat Pengesahan dalam Go Menggunakan Tag Struct?

Barbara Streisand
Barbara Streisandasal
2024-12-10 03:38:16353semak imbas

How to Customize Validation Error Messages in Go Using Struct Tags?

Menyesuaikan Mesej Ralat Pengesahan dengan Teg Struktur

Pembangunan web Dalam Go menggunakan Gin, pengesahan struct memainkan peranan penting dalam memastikan integriti data sebelum kegigihan . Mesej ralat lalai yang disediakan oleh pustaka pengesahan asas, walau bagaimanapun, boleh menjadi verbose dan kurang mesra pengguna. Artikel ini meneroka cara untuk mengembalikan mesej ralat tersuai berdasarkan teg struct, membenarkan pembangun memberikan maklum balas yang lebih bermakna dan boleh diambil tindakan kepada pengguna.

Memahami Validator.ValidationErrors

Leverage Gin perpustakaan github.com/go-playground/validator/v10 untuk pengesahan. Apabila pengesahan gagal, ralat jenis validator.ValidationErrors dikembalikan. Jenis ralat ini mengandungi sekeping contoh pengesah.FieldError, setiap satu mewakili medan yang tidak sah.

Menyesuaikan Mesej Ralat

Untuk menyesuaikan mesej ralat, anda boleh membuka pembalut pengesah. Ralat ValidationErrors menggunakan pakej ralat, akses validator.FieldError dan bina ralat tersuai mesej berdasarkan teg medan. Atribut teg dalam medan struct membenarkan pembangun untuk menentukan peraturan pengesahan tersuai dan mesej ralat.

Sebagai contoh, pertimbangkan coretan kod berikut:

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 ""
}

Kod ini mentakrifkan struct ApiError dan pembantu fungsi msgForTag yang memetakan tag kepada mesej ralat tersuai. Menggunakan ini, anda boleh melaksanakan pengendali berikut:

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
}

Dalam pengendali ini, ralat validator.ValidationErrors dibuka dan setiap validator.FieldError diubah menjadi ApiError dengan mesej tersuai berdasarkan teg medan . Potongan ApiError kemudiannya dikodkan JSON dan dikembalikan sebagai respons ralat dengan kekunci dinamik yang sepadan dengan medan.

Kesimpulan

Dengan menyesuaikan mesej ralat pengesahan menggunakan teg struct , pembangun boleh memberikan maklum balas yang lebih mesra pengguna dan bermaklumat semasa pengesahan data. Pendekatan ini meningkatkan pengalaman pengguna dan memudahkan proses penyahpepijatan, menjadikannya lebih mudah untuk mengenal pasti dan membetulkan ralat input.

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Mesej Ralat Pengesahan dalam Go Menggunakan Tag Struct?. 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