Heim > Backend-Entwicklung > Golang > Wie kann Go Middleware mit Fehlern umgehen, die von Anforderungshandlern zurückgegeben werden?

Wie kann Go Middleware mit Fehlern umgehen, die von Anforderungshandlern zurückgegeben werden?

Mary-Kate Olsen
Freigeben: 2024-11-28 09:45:12
Original
716 Leute haben es durchsucht

How Can Go Middleware Handle Errors Returned by Request Handlers?

So kombinieren Sie das Go-Middleware-Muster mit Fehler-zurückgebenden Anforderungshandlern

Das Go-Middleware-Muster ist ein leistungsstarkes Tool zum Verpacken und Vorverarbeiten HTTP-Anfragen. Herkömmliche Middleware-Handler können jedoch keine Fehler zurückgeben, was die Fehlerbehandlung erschweren kann.

Fehlerrückgebende Anforderungshandler

Damit Handler Fehler zurückgeben können, können wir eine benutzerdefinierte Definition definieren Handlertyp:

type errorHandler func(http.ResponseWriter, *http.Request) error
Nach dem Login kopieren

Dieser Typ ermöglicht es Handlern, Fehler zu generieren, anstatt Panik oder Protokollierung zu verwenden intern.

Fehler-Middleware

Um diese Fehler zu behandeln, benötigen wir eine spezielle Middleware, die den Fehler zurückgebenden Handlertyp akzeptieren kann.

func errorHandler(h errorHandler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        err := h(w, r)
        if err != nil {
            // Handle error appropriately (e.g., log, send error response)
        }
    })
}
Nach dem Login kopieren

Diese Middleware umschließt den Fehler zurückgebenden Handler und behandelt alle Fehler, die er verursacht generiert.

Verwendung

Um eine Middleware-Kette mit Fehler-zurückgebenden Handlern zu verwenden, umschließen wir einfach den letzten Handler mit der Fehler-Middleware und verketten ihn mit anderer Middleware.

// Create a middleware chain.
moreMiddleware(myMiddleware(errorHandler(myHandlerReturningError)))
Nach dem Login kopieren

Router-Integration

Der Einfachheit halber sollten Sie die Erstellung in Betracht ziehen Ihr eigener Router, der dieses Muster unterstützt und die Middleware-Kette automatisch aufbaut.

Beispiel-Router

https://github.com/fragmenta/mux/blob/master/mux.go
Nach dem Login kopieren

Dieser Beispiel-Router zeigt, wie man eine Middleware-Kette aufbaut und Fehler behandelt effizient. Es zeigt die Vorteile der Verwendung eines benutzerdefinierten Handlertyps für die Fehlerbehandlung und vereinfacht die Verwendung von Middleware.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage