Go 言語でルーティング ミドルウェアを実装する方法、具体的なコード例が必要です
はじめに:
Go 言語の Web 開発では、ルーティングは次のようになります。欠かせない部品。ルーティングミドルウェアは、リクエストが目的の処理機能に到達する前に実行される機能モジュールです。リクエストに対するインターセプト、検証、記録などの操作を実行できるため、開発者がいくつかの一般的な機能を処理し、コードの再利用性を向上させることができます。
この記事では、Go 言語でルーティング ミドルウェアを実装する方法と具体的なコード例を紹介します。
1. ゴリラ/マルチプレクサ ライブラリを使用してルーティング ミドルウェアを実装します。
ターミナルで次のコマンドを実行して、ルーティング ミドルウェアを実装します。 Gorilla/mux ライブラリをインストールします:
go get -u github.com/gorilla/mux
ルーティング ミドルウェアの作成を開始しましょう。まず、ミドルウェア関数を定義するための新しいファイル middleware.go を作成します。
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!") }
上記のコードでは、http.Handler 型の次のパラメータを受け入れる、middleware という名前の関数を定義します。新しい http.Handler を返すことで、ターゲット ハンドラー関数をラップします。ラップされたハンドラーでは、カスタム ロジックを追加し、next.ServeHTTP(w, r) を呼び出して、リクエストを次のミドルウェアまたはターゲット ハンドラー関数に渡すことができます。
main 関数では、r.Use(middleware) を通じてミドルウェアをすべてのルートに適用します。
ターミナルで次のコマンドを実行してコードを実行します:
go run main.go
ここで、localhost:8080 にアクセスすると、コンソールに「ミドルウェアを実行しています」と出力されていることがわかります。
2. net/http ライブラリを使用してルーティング ミドルウェアを実装する
サードパーティ ライブラリを使用しない場合は、net/http ライブラリを使用してルーティング ミドルウェアを実装することもできます。
以下は具体的なサンプル コードです:
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!") }
上記のコードでは、http.Handler 型の次のパラメーターを受け入れる、middleware という名前の関数を定義します。新しい http.Handler を返すことで、ターゲット ハンドラー関数をラップします。ラップされたハンドラーでは、カスタム ロジックを追加し、next.ServeHTTP(w, r) を呼び出して、リクエストを次のミドルウェアまたはターゲット ハンドラー関数に渡すことができます。
main 関数では、新しい ServeMux を作成し、mux.Handle("/", handler) を使用してミドルウェアをルート ルートに適用します。
ターミナルで次のコマンドを実行してコードを実行します:
go run main.go
ここで、localhost:8080 にアクセスすると、コンソールに「ミドルウェアを実行中」と出力されていることがわかります。
結論:
上記のサンプルコードを通じて、Go 言語でルーティングミドルウェアを実装する方法を学びました。ルーティング ミドルウェアは、サードパーティのライブラリを使用するか、net/http ライブラリを直接使用して簡単に実装できます。この機能は、いくつかの一般的な機能要件を処理し、コードの再利用性を向上させ、アプリケーションをより柔軟で保守しやすくするのに役立ちます。この記事がお役に立てば幸いです!
以上がGo言語でルーティングミドルウェアを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。