Heim > Artikel > Backend-Entwicklung > So schreiben Sie 404 in Golang um
In Golang ist das Umschreiben der 404-Fehlerseite eine häufige Anforderung, die uns dabei helfen kann, benutzerfreundlichere und personalisiertere Fehlermeldungen bereitzustellen. In diesem Artikel stellt Ihnen der PHP-Editor Xigua vor, wie Sie die 404-Seite in Golang neu schreiben. Wir werden das Gin-Framework verwenden, um Webanwendungen zu erstellen und 404-Fehler durch benutzerdefinierte Middleware zu behandeln. Mithilfe der Anleitung dieses Artikels erfahren Sie, wie Sie die 404-Seite einfach und schnell umschreiben, um die Benutzererfahrung zu verbessern. Lasst uns beginnen!
Ich lerne immer noch, wie man Go für die Webentwicklung verwendet, aber wenn ich versuche, eine einfache Website zu erstellen, stoße ich auf folgende Schwierigkeiten:
package main import ( "fmt" "html/template" "net/http" ) func main() { fs := http.FileServer(http.Dir("")) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { tmpl, _ := template.ParseFiles("index.html") tmpl.Execute(w, nil) }) /** * This route will return a 404 error */ http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Test page") }) /** * If I replace fs to nil, /test route will be work, but non-existent routes * will be return index.html template (home router) instead 404 error. Why? */ http.ListenAndServe(":80", fs) }Es gibt einen Konflikt zwischen
http.FileServer
和 http.HandleFunc
.
Zum Beispiel, wenn ich schreibe: http.ListenAndServe(":80", nil)
时,所有路由 (http.HandleFunc
) wird beides funktionieren, aber wenn ich versuche, Folgendes zu tun:
http.ListenAndServe(":80", http.FileServer(http.Dir("")))
Keine Route ist gültig (außer http.HandleFunc("/"))
. Warum?
Wie überschreibe ich die 404-Fehlerseite? Ich wünschte, Go hätte eine Methode wie http.HandleError
, die die Schnittstellen http.ResponseWriter
und http.Request
akzeptiert, aber ich kann sie nicht finden sowas ähnliches. http.HandleError
这样的方法,它接受 http.ResponseWriter
和 http.Request
的接口,但我找不到类似的东西。
检查 http.ListenAndServe
Problemumgehung
Überprüfen Sie die Dokumentation von http.ListenAndServe
handler
为 nil,则将使用默认处理程序 http.HandleFunc
:
DefaultServeMux
注册了两条路由;调用 http.ListenAndServe(":80", nil)
使用默认处理程序(您添加了路由),因此 /test
可以工作(更多信息如下!)。但是,当您运行 http.ListenAndServe(":80", fs)
时,您将传入一个特定的处理程序 (fs
:
In Ihrem Code verwenden Sie also http.ListenAndServe(":80", nil)
), damit alle Anfragen an diesen Handler gesendet werden (er versucht, die Datei aus dem lokalen Dateisystem bereitzustellen).
Von diesem Punkt an gehe ich davon aus, dass verwendet wird (da es keinen Sinn macht, Handler hinzuzufügen und sie dann nicht zu verwenden). ServeMux
oben erwähnt
/test
比 /
长,因此优先)。这意味着对 /test
的请求将触发 fmt.Fprint(w, "测试页")
,其他所有内容将调用加载 index.html
的处理程序。需要注意的是,您尚未添加引用 fs
also schauen wir uns das Dokument an:).
Wie erstelle ich eine Golang-Weiterleitung zum Front-End-Routing? 🎜🎜
🎜
Das obige ist der detaillierte Inhalt vonSo schreiben Sie 404 in Golang um. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!