Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Go Middleware Boleh Mengendalikan Pengendali Ralat-Pemulangan?

Bagaimanakah Go Middleware Boleh Mengendalikan Pengendali Ralat-Pemulangan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-29 01:43:11606semak imbas

How Can Go Middleware Handle Error-Returning Handlers?

Corak Perisian Tengah dengan Pengendali Mengembalikan Ralat dalam Go

Corak perisian tengah Go menyediakan cara yang mudah untuk mengarang pengendali HTTP modular yang secara kolektif melaksanakan fungsi tertentu operasi sebelum, semasa, atau selepas pelaksanaan fungsi pengendali utama. Walau bagaimanapun, corak ini biasanya tidak menyokong pengendali yang mengembalikan ralat.

Untuk menangani had ini, seseorang boleh melaksanakan perisian tengah yang berfungsi sebagai penyesuai untuk pengendali yang mengembalikan ralat dengan menterjemahkan ralat yang mereka kembalikan kepada respons HTTP . Perisian tengah ini boleh ditambah sebagai perisian tengah terakhir dalam rantaian, mengendalikan keputusan akhir pengendali yang digubah. Berikut ialah contoh:

type errorHandler func(http.ResponseWriter, *http.Request) error

func (f errorHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    err := f(w, r)
    if err != nil {
        // log.Println(err)
        fmt.Println(err)
        os.Exit(1)
    }
}

Perisian tengah ini membungkus pengendali yang mengembalikan ralat dan memastikan bahawa sebarang ralat yang dijananya dikendalikan dengan sewajarnya. Untuk menggunakan perisian tengah ini, cuma buat pembungkus untuk pengendali yang mengembalikan ralat:

func errorHandle(w http.ResponseWriter, r *http.Request) error {
    w.Write([]byte(`Hello World from errorHandle!`))
    return nil
}

Dan kemudian gabungkannya dengan rangkaian perisian tengah anda, yang boleh termasuk perisian tengah lain yang tidak mengembalikan ralat:

middlewareChain := moreMiddleware(myMiddleware)
http.Handle("/", middlewareChain(errorHandler(errorHandle)))

Pendekatan ini membolehkan anda menggabungkan pengendali pengembalian ralat dengan perisian tengah lain dengan lancar, memastikan bahawa sebarang ralat dikendalikan oleh ralat middleware pengendali di hujung rantai.

Atas ialah kandungan terperinci Bagaimanakah Go Middleware Boleh Mengendalikan Pengendali Ralat-Pemulangan?. 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