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
Lepaskan: 2024-12-10 03:38:16
asal
433 orang telah melayarinya

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

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

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!

sumber:php.cn
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