Für die Implementierung der Routing-Middleware in der Go-Sprache sind spezifische Codebeispiele erforderlich
Einführung:
Bei der Webentwicklung in der Go-Sprache ist Routing ein unverzichtbarer Bestandteil. Routing-Middleware ist ein Funktionsmodul, das ausgeführt wird, bevor die Anforderung die Zielverarbeitungsfunktion erreicht. Sie können Anfragen abfangen, überprüfen, aufzeichnen und andere Vorgänge ausführen und so Entwicklern bei der Handhabung einiger allgemeiner Funktionen helfen und die Wiederverwendbarkeit des Codes verbessern.
In diesem Artikel wird die Implementierung von Routing-Middleware in der Go-Sprache vorgestellt und spezifische Codebeispiele bereitgestellt.
1. Verwenden Sie die Gorilla/Mux-Bibliothek, um Routing-Middleware zu implementieren.
go get -u github.com/gorilla/mux
Im obigen Code definieren wir eine Funktion namens Middleware, die als nächstes einen Parameter vom Typ http.Handler akzeptiert. Wir umschließen die Zielhandlerfunktion, indem wir einen neuen http.Handler zurückgeben. Im umschlossenen Handler können wir unsere benutzerdefinierte Logik hinzufügen und dann next.ServeHTTP(w, r) aufrufen, um die Anforderung an die nächste Middleware- oder Zielhandlerfunktion weiterzuleiten.
Führen Sie den folgenden Befehl im Terminal aus, um den Code auszuführen:
package main import ( "fmt" "net/http" "github.com/gorilla/mux" ) func middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // 在请求到达目标处理函数之前执行的操作 fmt.Println("Executing middleware") // 调用下一个中间件或目标处理函数 next.ServeHTTP(w, r) }) } func main() { r := mux.NewRouter() // 使用我们的中间件 r.Use(middleware) // 路由定义 r.HandleFunc("/", homeHandler).Methods("GET") // 启动服务器 http.ListenAndServe(":8080", r) } func homeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") }
Wenn wir nun auf localhost:8080 zugreifen, können wir in der Konsole die Ausgabe „Middleware wird ausgeführt“ sehen.
Das Folgende ist ein spezifischer Beispielcode:
go run main.go
Im obigen Code definieren wir eine Funktion namens Middleware, die als nächstes einen Parameter vom Typ http.Handler akzeptiert. Wir umschließen die Zielhandlerfunktion, indem wir einen neuen http.Handler zurückgeben. Im umschlossenen Handler können wir unsere benutzerdefinierte Logik hinzufügen und dann next.ServeHTTP(w, r) aufrufen, um die Anforderung an die nächste Middleware- oder Zielhandlerfunktion weiterzuleiten.
In der Hauptfunktion erstellen wir einen neuen ServeMux und verwenden mux.Handle("/", handler), um unsere Middleware auf die Root-Route anzuwenden.
Führen Sie den Code ausFühren Sie den folgenden Befehl im Terminal aus, um den Code auszuführen:
package main import ( "fmt" "log" "net/http" ) type MyHandler struct{} func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { fmt.Println("Executing middleware") // 调用目标处理函数 homeHandler(w, r) } func middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // 在请求到达目标处理函数之前执行的操作 fmt.Println("Executing middleware") next.ServeHTTP(w, r) }) } func main() { mux := http.NewServeMux() // 创建中间件 handler := middleware(&MyHandler{}) // 设置路由 mux.Handle("/", handler) // 启动服务器 log.Fatal(http.ListenAndServe(":8080", mux)) } func homeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") }
Wenn wir nun localhost:8080 besuchen, können wir in der Konsole die Ausgabe „Middleware wird ausgeführt“ sehen.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie Routing-Middleware in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!