


Wie implementiert man eine benutzerdefinierte 404-Fehlerseite im Standard-HTTP-Paket von Go?
Dec 28, 2024 am 08:59 AMBenutzerdefinierte 404-Fehlerseite mit Standard-HTTP-Paket anzeigen
HTTP-Server zeigen normalerweise eine einfache Fehlermeldung „404-Seite nicht gefunden“ an, wenn ein Benutzer eine nicht vorhandene URL anfordert . Um ein informativeres oder individuelleres Erlebnis zu bieten, ist es notwendig, einen benutzerdefinierten Fehlerseiten-Handler zu implementieren.
Im Standard-HTTP-Paket für Go gibt es einen Mechanismus, um alle nicht bearbeiteten Anfragen zu verarbeiten und eine benutzerdefinierte Fehlerseite anzuzeigen . Sehen wir uns an, wie Sie dies erreichen können:
Benutzerdefinierte Fehlerbehandlungsfunktion
Erstellen Sie eine Funktion zur Behandlung der benutzerdefinierten Fehlerseite. Diese Funktion benötigt drei Argumente:
- w (http.ResponseWriter): Antwortschreiber, der zum Senden der benutzerdefinierten Fehlerseite verwendet wird.
- r (*http.Request): Anforderungsobjekt für das Nichtvorhandene URL.
- status (int): Statuscode des Fehlers (normalerweise http.StatusNotFound).
func errorHandler(w http.ResponseWriter, r *http.Request, status int) { // Set the HTTP status code. w.WriteHeader(status) // Customize the error response for specific status codes. if status == http.StatusNotFound { fmt.Fprint(w, "Custom 404 error message") } }
Festlegen des benutzerdefinierten Fehlers Handler
Die Fehlerhandlerfunktion muss mit dem HTTP-Server verknüpft sein. Dies erfolgt in der Funktion http.ListenAndServe, die den Server an einem angegebenen Port startet.
http.ListenAndServe(":12345", nil)
Ersetzen Sie nil durch einen benutzerdefinierten HTTP-Anforderungshandler, der alle Anforderungen verarbeitet.
http.ListenAndServe(":12345", new(http.ServeMux))
Fügen Sie in ServeMux die ursprünglichen Routenhandler für bestimmte URLs hinzu.
mux := http.NewServeMux() mux.HandleFunc("/smth/", smthHandler) mux.HandleFunc("/", homeHandler) http.ListenAndServe(":12345", mux)
Fügen Sie abschließend einen NotFoundHandler hinzu an den ServeMux, um alle anderen URLs zu verarbeiten, die nicht von den spezifischen Routenhandlern verarbeitet werden.
mux.NotFoundHandler = http.HandlerFunc(errorHandler)
Beispielcode
Der vollständige Beispielcode, der den obigen Ansatz implementiert, lautet wie folgt folgt:
package main import ( "fmt" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/smth/", smthHandler) mux.HandleFunc("/", homeHandler) mux.NotFoundHandler = http.HandlerFunc(errorHandler) http.ListenAndServe(":12345", mux) } func smthHandler(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/smth/" { errorHandler(w, r, http.StatusNotFound) return } fmt.Fprint(w, "Welcome to smth") } func homeHandler(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/" { errorHandler(w, r, http.StatusNotFound) return } fmt.Fprint(w, "Welcome home") } func errorHandler(w http.ResponseWriter, r *http.Request, status int) { w.WriteHeader(status) if status == http.StatusNotFound { fmt.Fprint(w, "Custom 404 error message") } }
Dieser Code definiert Routenhandler für bestimmte URLs (/smth/ und /) und weist einen benutzerdefinierten zu Fehlerhandlerfunktion (errorHandler) zur Bearbeitung aller anderen nicht bearbeiteten Anfragen. Wenn ein Benutzer versucht, auf eine nicht vorhandene URL zuzugreifen, wird die benutzerdefinierte 404-Fehlerseite anstelle der Standardmeldung „404-Seite nicht gefunden“ angezeigt.
Das obige ist der detaillierte Inhalt vonWie implementiert man eine benutzerdefinierte 404-Fehlerseite im Standard-HTTP-Paket von Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

Wie kann ich Linter und statische Analyse -Tools verwenden, um die Qualität und Wartbarkeit meines GO -Codes zu verbessern?

Wie schreibe ich Dateien in Go Language bequem?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?
