Corak Middleware dalam Go
Corak middleware Go membolehkan pembangun merangkum merentasi kebimbangan dan meningkatkan pengendali tanpa mengubah fungsi teras mereka. Corak middleware biasanya melibatkan penciptaan fungsi yang menerima pengendali dan mengembalikan pengendali baharu dengan logik tambahan:
func middlewareHandler(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Middleware logic before application handler execution next.ServeHTTP(w, r) // Middleware logic after application handler execution }) }
Corak ini membenarkan penciptaan komponen middleware boleh guna semula, seperti yang digunakan untuk pengelogan atau pengesahan.
Pengendali Mengembalikan Ralat Corak
Sebagai alternatif, seseorang mungkin memilih untuk melaksanakan pengendali sebagai fungsi yang secara langsung mengembalikan ralat. Ini memudahkan pengendalian ralat, membenarkan pembangun mengembalikan ralat apabila perlu atau hanya mengembalikan sifar pada penghujung fungsi:
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 { // Error handling logic (logging, etc.) } }
Corak ini menyediakan cara yang bersih dan ringkas untuk mengendalikan ralat.
Menggabungkan Middleware dan Pengendali Ralat-Pemulangan
Untuk menggabungkan corak middleware dengan pengendali yang mengembalikan ralat, seseorang boleh memperkenalkan perisian tengah khusus yang bertanggungjawab untuk mengendalikan ralat:
func errorHandler(h MyHandlerFunc) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { err := h(w, r) if err != nil { // Error handling logic (logging, etc.) } }) }
Perisian tengah ini boleh digunakan untuk membalut pengendali yang mengembalikan ralat:
moreMiddleware(myMiddleWare(errorHandler(myhandleFuncReturningError)))
Dengan memisahkan kebimbangan perisian tengah daripada pengendalian ralat, pendekatan ini menyediakan fleksibiliti dan keupayaan pengendalian ralat dalam rantaian perisian tengah.
Atas ialah kandungan terperinci Bagaimanakah Go Middleware Boleh Mengendalikan Pengendali Permintaan Mengembalikan Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!