Go 中帶有錯誤返回處理程序的中間件模式
Go 中間件模式提供了一種便捷的方法來組合模組化HTTP 處理程序,這些處理程序共同執行特定的操作在主處理函數執行之前、期間或之後的操作。但是,此模式通常不支援傳回錯誤的處理程序。
為了解決這個限制,可以實作一個中間件,透過將錯誤傳回處理程序傳回的錯誤轉換為 HTTP 回應,充當錯誤傳回處理程序的轉接器。此中間件可以添加為鏈中的最後一個中間件,處理組合處理程序的最終結果。這是一個範例:
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) } }
此中間件包裝了一個錯誤返回處理程序,並確保它產生的任何錯誤都得到適當處理。要使用此中間件,只需為錯誤返回處理程序建立包裝器:
func errorHandle(w http.ResponseWriter, r *http.Request) error { w.Write([]byte(`Hello World from errorHandle!`)) return nil }
然後將其與您的中間件鏈組合,其中可以包括其他不傳回錯誤的中間件:
middlewareChain := moreMiddleware(myMiddleware) http.Handle("/", middlewareChain(errorHandler(errorHandle)))
這種方法允許您將錯誤返回處理程序與其他中間件無縫地結合起來,確保任何錯誤都由錯誤處理程序中間件在結束時處理鏈條。
以上是Go 中介軟體如何處理錯誤回傳處理程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!