Umgang mit 404s mit HTTP-Router
Die HTTP-Router-Bibliothek bietet robuste Routing-Funktionen für die API-Entwicklung. Eine häufige Aufgabe ist die Bearbeitung von 404-Antworten (nicht gefunden). Während in der Dokumentation kurz die Möglichkeit erwähnt wird, einen benutzerdefinierten 404-Handler zu definieren, können die Implementierungsdetails verwirrend sein.
Grundlegendes zur benutzerdefinierten Handler-Schnittstelle
Die httprouter.Router-Struktur enthält ein Feld namens NotFound, das eine http.Handler-Schnittstelle ist. Diese Schnittstelle definiert eine einzelne Methode, ServeHTTP(), die einen ResponseWriter und einen Request als Argumente akzeptiert.
Erstellen eines benutzerdefinierten 404-Handlers
So erstellen Sie einen benutzerdefinierten 404-Handler , definieren Sie eine Funktion mit der Methodensignatur ServeHTTP() und verwenden Sie die Hilfsfunktion http.HandlerFunc(), um sie in einen http.Handler-Wert umzuwandeln.
Beispielimplementierung:
<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) // StatusNotFound = 404 w.Write([]byte("My own Not Found handler.")) w.Write([]byte(" The page you requested could not be found.")) }</code>
Einstellen des benutzerdefinierten Handlers
Als nächstes weisen Sie Ihren benutzerdefinierten Handler dem NotFound-Feld des HTTP-Router-Objekts zu:
<code class="go">router := httprouter.New() router.NotFound = http.HandlerFunc(MyNotFound)</code>
Manuell Aufruf eines benutzerdefinierten Handlers
Wenn Sie Ihren benutzerdefinierten 404-Handler jemals manuell aus einem anderen HTTP-Handler heraus aufrufen müssen, können Sie dies tun, indem Sie ihm einen ResponseWriter und eine Anfrage übergeben:
<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) { exists := ... // Check for resource existence if !exists { MyNotFound(w, r) // Pass ResponseWriter and Request return } // Resource exists, serve it // ... }</code>
Das obige ist der detaillierte Inhalt vonWie kann ich 404-Fehler mit einem HTTP-Router individuell behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!