Golang は、効率的で簡潔な高性能プログラミング言語です。主な特徴は、コードの実行速度の点で他の言語に比べて優れていることです。 Golang でのルーティングは Web 開発の重要な部分であり、リクエストを正しいハンドラーにマッピングするためのルーティングが必要です。この記事ではGolangを使ってルーティングを実装する方法を紹介します。
1. 基本的な HTTP サーバーを作成する
まず、ローカル コンピューター上に基本的な HTTP サーバーを作成する必要があります。
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", hello) log.Fatal(http.ListenAndServe(":8080", nil)) } func hello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") }
上記のコードは、Go の組み込み http
パッケージを使用して HTTP サーバーを起動します。 http.HandleFunc
関数を使用してリクエストの送信先ハンドラーを指定し、http.ListenAndServe
関数を使用してポート 8080 でサーバーを起動します。
2. ルーティングの追加
上記のコードはルート パスのみを処理できます。ここで、他のパスを処理するための別のハンドラーを追加します。
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", home) http.HandleFunc("/about", about) log.Fatal(http.ListenAndServe(":8080", nil)) } func home(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Home Page") } func about(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "About Page") }
上記のコードでは、http.HandleFunc
関数を使用して、home
と about
という 2 つのハンドラー関数を定義します。また、それらをパス /
および /about
にマッピングしました。
3. サードパーティ ライブラリを使用してルーティングを実装する
Golang には、ルーティングの実装に役立つサードパーティ ライブラリもいくつかあります。これらの中で最も人気のあるのは mux
ライブラリです。
mux
を使用してルーティングを実装するには、上記のコードを次のように変更する必要があります:
package main import ( "fmt" "log" "net/http" "github.com/gorilla/mux" ) func main() { router := mux.NewRouter() router.HandleFunc("/", home) router.HandleFunc("/about", about) log.Fatal(http.ListenAndServe(":8080", router)) } func home(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Home Page") } func about(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "About Page") }
上記のコードでは、gorilla/mux# を使用しました。 # #ルーティングを処理するライブラリ。まず、
mux.Router のインスタンスを作成します。次に、2 つのハンドラー関数を定義し、それらを上記と同じパスにバインドします。
/user/10 のようなリクエストを処理する動的パスとしてルーティングを設定することもできます。この場合、
10 は動的部分であり、必要に応じて変更できます。
mux.Vars() 関数を使用して、
10 のような値を抽出し、
http.ResponseWriter 関数を使用してそれを送り返すことができます。クライアント。
package main import ( "fmt" "log" "net/http" "github.com/gorilla/mux" ) func main() { router := mux.NewRouter() router.HandleFunc("/", home) router.HandleFunc("/about", about) // 添加动态路由 router.HandleFunc("/user/{id}", func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) id := vars["id"] fmt.Fprintf(w, "User ID: %v", id) }) log.Fatal(http.ListenAndServe(":8080", router)) } func home(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Home Page") } func about(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "About Page") }上記のコードは、パス
/user/{id} を匿名関数にマップし、「id」値を抽出してクライアントに送り返します。
package main import ( "fmt" "log" "net/http" "github.com/gorilla/mux" ) func main() { router := mux.NewRouter() // 创建子路由器 api := router.PathPrefix("/api").Subrouter() api.HandleFunc("/", apiHome) api.HandleFunc("/user", apiUser) // 添加其他路由 router.HandleFunc("/", home) router.HandleFunc("/about", about) log.Fatal(http.ListenAndServe(":8080", router)) } func home(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Home Page") } func about(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "About Page") } func apiHome(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "API Home Page") } func apiUser(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "API User Page") }上記のコードは、
Subrouter() を使用してサルーターを作成し、それをパス
/api にマップする方法を示しています。さらに、他の基本的なルーティング関数とハンドラー関数も追加しました。
gorilla/mux ライブラリを使用してコードを最適化します。また、動的ルーティングの使用方法、ルートをグループ化する方法、およびルートにハンドラーを追加する方法についても説明しました。
以上がGolang を使用してルーティングを実装する方法を説明する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。