Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behandelt man 404-Fehler mit benutzerdefinierten Handlern in httprouter?

Wie behandelt man 404-Fehler mit benutzerdefinierten Handlern in httprouter?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-28 03:47:30716Durchsuche

How to Handle 404 Errors with Custom Handlers in httprouter?

Behandlung von 404-Fehlern mit den benutzerdefinierten Handlern von httprouter

In einer mit httprouter erstellten HTTP-API erfordert die Behandlung von 404-Fehlern (nicht gefunden) einen benutzerdefinierten Handler . Die Dokumentation erwähnt diese Möglichkeit, enthält jedoch keine expliziten Anweisungen zum Erstellen einer solchen.

Einrichten eines benutzerdefinierten Handlers

Um 404-Fehler manuell zu behandeln, folgen Sie den Anweisungen Diese Schritte:

  1. Definieren Sie eine Funktion mit der folgenden Signatur:

    <code class="go">func(http.ResponseWriter, *http.Request)</code>
  2. Konvertieren Sie die Funktion mithilfe von http in einen http.Handler. HandlerFunc()-Hilfsfunktion.

    <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."))
    
        // or with more detailed message
        w.Write([]byte(" The page you requested could not be found."))
    }</code>
  3. Weisen Sie den MyNotFound-Handler dem NotFound-Feld des httprouters zu:

    <code class="go">var router *httprouter.Router = ... // Your router value
    router.NotFound = http.HandlerFunc(MyNotFound)</code>

Manuelles Aufrufen des benutzerdefinierten Handlers

In Ihren Handlern können Sie den MyNotFound-Handler bei Bedarf manuell aufrufen, indem Sie ResponseWriter und *Request: ü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>

Indem Sie diese implementieren Schritte können Sie 404-Fehler in Ihrer httprouter-basierten API effektiv behandeln und das Verhalten nach Bedarf anpassen.

Das obige ist der detaillierte Inhalt vonWie behandelt man 404-Fehler mit benutzerdefinierten Handlern in httprouter?. 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