Bagaimana Mengendalikan Ralat dalam Peranti Tengah Gin: Pendekatan Berpusat?

Susan Sarandon
Lepaskan: 2024-11-05 04:42:02
asal
678 orang telah melayarinya

How to Handle Errors in Gin Middleware:  A Centralized Approach?

Cara Mengendalikan Ralat dalam Peranti Tengah Gin

Pengenalan

Apabila membina aplikasi web menggunakan rangka kerja Gin, adalah perkara biasa untuk mengendalikan ralat dalam setiap laluan pengendali. Ini boleh membawa kepada pendekatan yang menyusahkan dan berlebihan, terutamanya apabila mengendalikan berbilang ralat HTTP. Gin menyediakan penyelesaian yang lebih elegan melalui penggunaan middleware pengendalian ralat.

Pengendalian Ralat Berasaskan Middleware

Daripada mengendalikan ralat secara eksplisit dalam setiap laluan, kami boleh mencipta perisian tengah yang memintas ralat dan menyediakan cara terpusat untuk mengendalikannya. Fungsi middleware harus termasuk langkah berikut:

<code class="go">func ErrorHandler(c *gin.Context) {
    // Proceed to the next handler in the chain
    c.Next()

    // Iterate over the errors that occurred during the request handling
    for _, err := range c.Errors {
        // Log the error or perform any other necessary operations
        logger.Error(&quot;whoops&quot;, ...)

        // Send an HTTP response with the appropriate status (or -1 to omit overwriting)
        c.JSON(-1, /* error payload */)
    }
}</code>
Salin selepas log masuk

Middleware ditambahkan pada penghala menggunakan kaedah Use:

<code class="go">router := gin.New()
router.Use(middleware.ErrorHandler)</code>
Salin selepas log masuk

Dalam pengendali laluan, bukannya mengendalikan ralat secara manual, kita boleh membatalkan permintaan dengan status HTTP yang sesuai:

<code class="go">func (h *Handler) List(c *gin.Context) {
    movies, err := h.service.ListService()

    if err != nil {
        c.AbortWithError(http.StatusInternalServerError, err)
        return
    }

    c.JSON(http.StatusOK, movies)
}</code>
Salin selepas log masuk

Mengendalikan Ralat Tersuai

Dalam perisian tengah, kita boleh memeriksa ralat asal dengan mengakses medan Err gin.Jenis ralat :

<code class="go">for _, err := range c.Errors {
    switch err.Err {
        case ErrNotFound:
            c.JSON(-1, gin.H{&quot;error&quot;: ErrNotFound.Error()})
    }
    // etc...
}</code>
Salin selepas log masuk

Pengumpulan Ralat dan Pengelogan

Kelebihan menggunakan perisian tengah ialah ia membolehkan kami mengumpul berbilang ralat semasa pengendalian permintaan. Selain itu, kami boleh menambah maklumat kontekstual pada ralat, seperti ID pengguna, URL permintaan dan banyak lagi. Maklumat ini boleh digunakan untuk pengelogan dan pelaporan ralat yang lebih terperinci.

Kesimpulan

Dengan menggunakan pengendalian ralat berasaskan middleware dalam Gin, kami boleh memusatkan dan memudahkan pengendalian ralat, meningkatkan kebolehbacaan kod dan meningkatkan keupayaan pembalakan ralat. Pendekatan ini lebih idiomatik dan memberikan fleksibiliti untuk mengendalikan ralat tersuai dan mengumpul berbilang ralat semasa kitaran hayat permintaan.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Ralat dalam Peranti Tengah Gin: Pendekatan Berpusat?. 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