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 サイトの他の関連記事を参照してください。

Golangは高い並行性タスクにより適していますが、Pythonには柔軟性がより多くの利点があります。 1.Golangは、GoroutineとChannelを介して並行性を効率的に処理します。 2。Pythonは、GILの影響を受けるが、複数の並行性メソッドを提供するスレッドとAsyncioに依存しています。選択は、特定のニーズに基づいている必要があります。

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

seetgolangforhighperformance andconcurrency、ithyforbackendservicesandnetworkプログラミング、selectthonforrapiddevelopment、datascience、andmachinelearningduetoistsversitydextentextensextensentensiveLibraries。

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとPythonはどのような側面で使いやすく、より滑らかな学習曲線を持っていますか? Golangは、高い並行性と高性能のニーズにより適しており、学習曲線はC言語の背景を持つ開発者にとって比較的穏やかです。 Pythonは、データサイエンスと迅速なプロトタイピングにより適しており、初心者にとって学習曲線は非常にスムーズです。

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golangは迅速な発展と同時プログラミングに適していますが、Cは極端なパフォーマンスと基礎となる制御を必要とするプロジェクトにより適しています。 1)Golangの並行性モデルは、GoroutineとChannelを介した同時性プログラミングを簡素化します。 2)Cのテンプレートプログラミングは、一般的なコードとパフォーマンスの最適化を提供します。 3)Golangのごみ収集は便利ですが、パフォーマンスに影響を与える可能性があります。 Cのメモリ管理は複雑ですが、コントロールは問題ありません。

speed、効率、およびシンプル性をspeedsped.1)speed:gocompilesquilesquicklyandrunseffictient、理想的なlargeprojects.2)効率:等系dribribraryreducesexexternaldedenciess、開発効果を高める3)シンプルさ:


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
