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

Susan Sarandon
Freigeben: 2024-10-26 11:39:30
Original
573 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!