„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich 404-Antworten (nicht gefunden) in Go mit httprouter anpassen?

Wie kann ich 404-Antworten (nicht gefunden) in Go mit httprouter anpassen?

Veröffentlicht am 01.11.2024
Durchsuche:960

How to Customize 404 (Not Found) Responses in Go with httprouter?

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.

Neuestes Tutorial Mehr>

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