httprouter ist eine beliebte Routing-Middleware für Golang, mit der Sie benutzerdefinierte Handler für bestimmte Routen oder Muster registrieren können. In Fällen, in denen eine Route oder Ressource nicht gefunden wird, möchten Sie diese 404-Not-Found-Antworten möglicherweise selbst bearbeiten.
Der Typ httprouter.Router verfügt über ein Feld namens NotFound, Das ist ein http.Handler. Das bedeutet, dass Sie diesem Feld einen benutzerdefinierten Handler zuweisen können, um 404-Antworten zu verarbeiten.
Um einen benutzerdefinierten NotFound-Handler zu erstellen, müssen Sie eine Funktion mit der Signatur definieren :
func(http.ResponseWriter, *http.Request)
Sie können diese Funktion dann mithilfe der Hilfsfunktion http.HandlerFunc in einen http.Handler konvertieren.
Hier ist ein Beispiel dafür, wie Sie kann einen benutzerdefinierten NotFound-Handler festlegen:
<code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/plain; charset=utf-8") w.WriteHeader(http.StatusNotFound) w.Write([]byte("My own Not Found handler.")) w.Write([]byte(" The page you requested could not be found.")) } var router *httprouter.Router = ... // Your router value router.NotFound = http.HandlerFunc(MyNotFound)</code>
Dieser benutzerdefinierte Handler wird automatisch von httprouter aufgerufen, wenn eine 404 Not Found-Antwort auftritt.
In einigen Fällen möchten Sie möglicherweise den NotFound-Handler manuell aus einem anderen Handler heraus aufrufen. Sie können dies erreichen, indem Sie einen ResponseWriter und eine *Request an die MyNotFound-Funktion oder direkt an die NotFound-Methode des Routers übergeben:
<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) { exists := ... // Find out if requested resource is valid and available if !exists { MyNotFound(w, r) // Pass ResponseWriter and Request // Or via the Router: // router.NotFound(w, r) return } // Resource exists, serve it // ... }</code>
Das obige ist der detaillierte Inhalt vonWie kann ich die 404-Fehlerbehandlung in httprouter mit benutzerdefinierten Handlern anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!