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

Bagaimana untuk Menyesuaikan Mesej Ralat Pengesahan dalam Gin 1.17 Menggunakan Tag Struct?

Patricia Arquette
Lepaskan: 2024-12-07 16:27:18
asal
572 orang telah melayarinya

How to Customize Validation Error Messages in Gin 1.17 Using Struct Tags?

Cara Menyesuaikan Mesej Ralat daripada Pengesahan Struct Tag

Dalam Gin 1.17, menggunakan pengesahan tag struct untuk pengesahan data sebelum operasi pangkalan data adalah mudah. Walaupun mesej ralat lalai adalah verbose, ia boleh disesuaikan untuk memberikan maklum balas pengguna yang lebih jelas.

Tinjauan Keseluruhan Masalah

Gin menggunakan pakej github.com/go-playground/validator/v10 untuk pengesahan. Apabila pengesahan gagal, ia mengembalikan objek validator.ValidationErrors. Mesej ralat bertele-tele ini mengandungi maklumat tentang setiap medan yang gagal pengesahan.

Menyesuaikan Mesej Ralat

Untuk mendapatkan mesej ralat tersuai, anda boleh:

  • Menyahbungkus ralat standard taip menggunakan pakej ralat.
  • Akses pengesah individu.FieldError objek daripada validator yang tidak dibalut.ValidationErrors.
  • Bina model ralat tersuai dan isikannya dengan nama medan dan mesej ralat tersuai yang ditentukan oleh teg pengesahan medan.

Contoh Pelaksanaan

Berikut ialah pelaksanaan yang menterjemahkan ralat pengesahan kepada respons JSON dengan ralat berasaskan medan dinamik struktur:

type ApiError struct {
    Field string
    Msg   string
}

func HandleValidationErrors(c *gin.Context, err error) {
    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})
    }
}

func msgForTag(tag string) string {
    switch tag {
    case "required":
        return "This field is required"
    case "email":
        return "Invalid email"
    }
    return ""
}
Salin selepas log masuk

Contoh Penggunaan

Dalam fungsi pengendali, gunakan HandleValidationErrors untuk mengendalikan ralat pengesahan:

func UserHandler(c *gin.Context) {
    var u User
    err := c.BindQuery(&u);
    if err != nil {
        HandleValidationErrors(c, err)
        return
    }
    // ...
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Mesej Ralat Pengesahan dalam Gin 1.17 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