Rumah > pembangunan bahagian belakang > Golang > Bagaimana Go Middleware Boleh Mengendalikan Ralat yang Dipulangkan oleh Pengendali Permintaan?

Bagaimana Go Middleware Boleh Mengendalikan Ralat yang Dipulangkan oleh Pengendali Permintaan?

Mary-Kate Olsen
Lepaskan: 2024-11-28 09:45:12
asal
727 orang telah melayarinya

How Can Go Middleware Handle Errors Returned by Request Handlers?

Cara Menggabungkan Corak Perisian Tengah Go dengan Pengendali Permintaan Memulang Ralat

Corak perisian tengah Go ialah alat yang berkuasa untuk membalut dan pra-pemprosesan Permintaan HTTP. Walau bagaimanapun, pengendali middleware tradisional tidak boleh mengembalikan ralat, yang boleh merumitkan pengendalian ralat.

Pengendali Permintaan Mengembalikan Ralat

Untuk membolehkan pengendali mengembalikan ralat, kami boleh menentukan adat jenis pengendali:

type errorHandler func(http.ResponseWriter, *http.Request) error
Salin selepas log masuk

Jenis ini membenarkan pengendali menjana ralat dan bukannya menggunakan panik atau pengelogan secara dalaman.

Ralat Middleware

Untuk mengendalikan ralat ini, kami memerlukan middleware khas yang boleh menerima jenis pengendali yang mengembalikan ralat.

func errorHandler(h errorHandler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        err := h(w, r)
        if err != nil {
            // Handle error appropriately (e.g., log, send error response)
        }
    })
}
Salin selepas log masuk

Perisian tengah ini membalut pengendali yang mengembalikan ralat dan menangani sebarang ralat yang dilakukannya menjana.

Penggunaan

Untuk menggunakan rantaian middleware dengan pengendali yang mengembalikan ralat, kami hanya membalut pengendali terakhir dengan middleware ralat dan rantaikannya dengan middleware lain.

// Create a middleware chain.
moreMiddleware(myMiddleware(errorHandler(myHandlerReturningError)))
Salin selepas log masuk

Integrasi Penghala

Untuk kesederhanaan, pertimbangkan untuk mencipta penghala anda sendiri yang menyokong corak ini dan membina rantaian middleware secara automatik.

Contoh Router

https://github.com/fragmenta/mux/blob/master/mux.go
Salin selepas log masuk

Contoh penghala ini menunjukkan cara membina perisian tengah rantai dan mengendalikan ralat dengan cekap. Ia mempamerkan faedah menggunakan jenis pengendali tersuai untuk pengendalian ralat dan memudahkan penggunaan perisian tengah.

Atas ialah kandungan terperinci Bagaimana Go Middleware Boleh Mengendalikan Ralat yang Dipulangkan oleh Pengendali Permintaan?. 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