Middleware-Muster in Go
Das Go-Middleware-Muster ermöglicht Entwicklern die Kapselung übergreifende Anliegen und verbessern die Handler, ohne ihre Kernfunktionalität zu verändern. Das Middleware-Muster umfasst typischerweise das Erstellen einer Funktion, die einen Handler akzeptiert und einen neuen Handler mit zusätzlicher Logik zurückgibt:
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 }) }
Dieses Muster ermöglicht die Erstellung wiederverwendbarer Middleware-Komponenten, beispielsweise solche für die Protokollierung oder Authentifizierung.
Error-Returning Handler Pattern
Alternativ könnte man Handler lieber als implementieren Funktionen, die Fehler direkt zurückgeben. Dies vereinfacht die Fehlerbehandlung und ermöglicht es Entwicklern, bei Bedarf einen Fehler zurückzugeben oder am Ende einer Funktion einfach Null zurückzugeben:
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.) } }
Dieses Muster bietet eine saubere und prägnante Möglichkeit, Fehler zu behandeln.
Middleware und Fehler zurückgebende Handler kombinieren
Um das Middleware-Muster mit Fehler zurückgebenden Handlern zu kombinieren, man kann eine dedizierte Middleware einführen, die für die Fehlerbehandlung verantwortlich ist:
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.) } }) }
Diese Middleware kann verwendet werden, um Handler zu umschließen, die Fehler zurückgeben:
moreMiddleware(myMiddleWare(errorHandler(myhandleFuncReturningError)))
Durch die Trennung von Middleware-Belangen und Fehlerbehandlung wird dies erreicht Der Ansatz bietet Flexibilität und Fehlerbehandlungsfunktionen innerhalb einer Middleware-Kette.
Das obige ist der detaillierte Inhalt vonWie kann Go Middleware mit fehlerhaften Anforderungshandlern umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!