Anpassen von „Nicht gefunden“ (404) Umgang mit httprouter
Beim Entwickeln einer API mit der httprouter-Bibliothek, Umgang mit 404 (Nicht gefunden) Antworten ist eine entscheidende Aufgabe. Während in der Dokumentation die Möglichkeit der manuellen Behandlung von 404-Fehlern erwähnt wird, kann die Implementierung eines benutzerdefinierten Handlers eine Herausforderung darstellen.
Das NotFound-Feld verstehen
Die httprouter.Router-Struktur enthält ein Feld mit dem Namen NotFound vom Typ http.Handler. Das bedeutet, dass der Wert für NotFound die in der http.Handler-Schnittstelle vorhandene ServeHTTP-Methode implementieren muss.
Erstellen eines benutzerdefinierten „Not Found“-Handlers
Um Ihren eigenen zu definieren Mit einem benutzerdefinierten Handler können Sie eine Funktion mit einer Signatur erstellen, die der ServeHTTP-Methode entspricht:
func MyNotFound(w http.ResponseWriter, r *http.Request) {
// ... Custom handling logic
}
Konvertieren der Funktion in einen Handler
Um Ihre Funktion in einen Wert zu konvertieren, der die http.Handler-Schnittstelle implementiert, können Sie den http.HandlerFunc()-Helfer verwenden Funktion:
router := httprouter.New()
router.NotFound = http.HandlerFunc(MyNotFound)
Manueller Aufruf des benutzerdefinierten Handlers
Wenn Sie Ihren benutzerdefinierten Handler manuell aus anderen Handlern aufrufen möchten, geben Sie den Handler an mit einem ResponseWriter und einem *Request:
func ResourceHandler(w http.ResponseWriter, r *http.Request) {
// ... Code to determine resource validity
if !resourceExists {
MyNotFound(w, r) // Manual invocation of custom handler
return
}
// ... Resource exists, serve it normally
}
Fazit
Indem Sie diese Schritte befolgen, können Sie den „Nicht gefunden“-Verarbeitungsprozess in Ihrer httprouter-basierten API effektiv anpassen und so sicherstellen, dass Benutzer entsprechende Antworten erhalten, wenn versucht, auf nicht vorhandene Ressourcen zuzugreifen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3