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:
Definieren Sie eine Funktion mit der folgenden Signatur:
<code class="go">func(http.ResponseWriter, *http.Request)</code>
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>
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!