Heim >Backend-Entwicklung >Golang >Wie gehe ich mit Fehlern in Go-Middleware-Ketten um?
Frage: Wie kann ich das Go-Middleware-Muster mit Anforderungshandlern kombinieren, die Fehler zurückgeben?
Antwort:
Das Middleware-Muster in Mit Go können wiederverwendbare Komponenten erstellt werden, die auf HTTP-Handler angewendet werden können. Herkömmliche Middleware-Funktionen behandeln Fehler jedoch nicht nativ.
Um die Fehlerbehandlung in Middleware zu ermöglichen, wird empfohlen, eine separate Middleware-Funktion zu verwenden, die diesem Zweck gewidmet ist. Diese Funktion sollte am Ende der Middleware-Kette platziert werden und Fehler verarbeiten, die von den Handlern innerhalb der Kette zurückgegeben werden.
// Pattern for a middleware function that checks for errors from the next handler. func errorHandler(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { err := next.ServeHTTP(w, r) if err != nil { // Handle the error, e.g., by logging or returning an appropriate HTTP response. } }) }
Beispiel:
Zur Kombination von Fehler- Zurückgeben von Handlern mit der Protokollierungs-Middleware aus dem ursprünglichen Beispiel:
type errorHandler func(http.ResponseWriter, *http.Request) error // Create a special error-aware logging middleware. func loggingWithErrorHandler(next errorHandler) errorHandler { return func(w http.ResponseWriter, r *http.Request) error { // Before executing the handler. start := time.Now() log.Printf("Started %s %s", r.Method, r.URL.Path) err := next(w, r) // After executing the handler. log.Printf("Completed %s in %v", r.URL.Path, time.Since(start)) return err } } // Define an error-returning handler func. func errorHandlerFunc(w http.ResponseWriter, r *http.Request) error { w.Write([]byte("Hello World from errorHandlerFunc!")) return nil } // Assemble the middleware chain and error-aware middleware. http.Handle("/", loggingWithErrorHandler(errorHandlerFunc))
Diese Kombination ermöglicht die Fehlerbehandlung unter Beibehaltung der Vorteile der Middleware Muster. Die umschlossene fehlerbewusste Middleware verarbeitet alle vom umschlossenen Handler zurückgegebenen Fehler.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Fehlern in Go-Middleware-Ketten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!