Heim >Backend-Entwicklung >Golang >Wie kann Go Middleware mit Handlern umgehen, die Fehler zurückgeben?

Wie kann Go Middleware mit Handlern umgehen, die Fehler zurückgeben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-29 01:43:11539Durchsuche

How Can Go Middleware Handle Error-Returning Handlers?

Middleware-Muster mit Fehler zurückgebenden Handlern in Go

Das Go-Middleware-Muster bietet eine praktische Möglichkeit, modulare HTTP-Handler zu erstellen, die gemeinsam bestimmte Aufgaben ausführen Operationen vor, während oder nach der Ausführung der Haupthandlerfunktion. Dieses Muster unterstützt jedoch normalerweise keine Handler, die Fehler zurückgeben.

Um diese Einschränkung zu beheben, kann man eine Middleware implementieren, die als Adapter für Fehler zurückgebende Handler dient, indem sie den von ihnen zurückgegebenen Fehler in eine HTTP-Antwort übersetzt . Diese Middleware kann als letzte Middleware in der Kette hinzugefügt werden und das Endergebnis der zusammengesetzten Handler verarbeiten. Hier ist ein Beispiel:

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)
    }
}

Diese Middleware umschließt einen Fehler zurückgebenden Handler und stellt sicher, dass alle von ihr generierten Fehler angemessen behandelt werden. Um diese Middleware zu verwenden, erstellen Sie einfach einen Wrapper für den Fehler zurückgebenden Handler:

func errorHandle(w http.ResponseWriter, r *http.Request) error {
    w.Write([]byte(`Hello World from errorHandle!`))
    return nil
}

Und kombinieren Sie ihn dann mit Ihrer Middleware-Kette, die andere Middlewares umfassen kann, die keine Fehler zurückgeben:

middlewareChain := moreMiddleware(myMiddleware)
http.Handle("/", middlewareChain(errorHandler(errorHandle)))

Dieser Ansatz ermöglicht es Ihnen, den Fehler zurückgebenden Handler nahtlos mit anderen Middlewares zu kombinieren und sicherzustellen, dass alle Fehler am Ende von der Fehlerhandler-Middleware behandelt werden Kette.

Das obige ist der detaillierte Inhalt vonWie kann Go Middleware mit Handlern umgehen, die Fehler zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn