Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich 404-Fehler mit einem HTTP-Router individuell behandeln?

Wie kann ich 404-Fehler mit einem HTTP-Router individuell behandeln?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 11:39:30561Durchsuche

How to Custom Handle 404 Errors with HTTP Router?

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!

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