Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Go Middleware Boleh Mengendalikan Pengendali Ralat-Pemulangan?
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!