Web 開発では、ルーティングは非常に重要な概念です。ルーティングはリクエストの処理方法を決定し、Web フレームワークの重要な部分です。この記事では、Golang を使用して HTTP ルーティングを実装する方法を紹介します。
Golang は、Google が発表した新しいプログラミング言語です。シンプルさ、効率性、セキュリティ、同時プログラミングのサポートが特徴で、Web 開発に非常に適したプログラミング言語です。したがって、この記事では HTTP ルーティングを実装するためのプログラミング言語として Golang を使用します。
HTTP ルーティングは、アプリケーションがユーザーのリクエストをハンドラーにマップするプロセスです。リクエストが Web サーバーに到着すると、Web サーバーはリクエストの URL と HTTP メソッド (GET、POST、PUT など) に基づいてハンドラーを検索し、そのハンドラーにリクエストを渡します。 HTTP ルーティングは Web アプリケーションの中心であり、ユーザーがアプリケーションとどのように対話するかを決定します。
Golang では、HTTP ルーティングをさまざまな方法で実装できます。その中で、より一般的に使用されるのは、標準ライブラリの http パッケージとサードパーティ パッケージの mux です。
Golang 標準ライブラリには、HTTP クライアントと HTTP サーバーの実装を提供する http というパッケージがあります。このパッケージでは、関数 http.HandleFunc が提供されます。この関数を呼び出すことで、ルーティングテーブルに関数を登録することができます。
この関数には 2 つのパラメータが必要です。1 つ目は文字列タイプのルーティング アドレスで、2 つ目は関数です。この関数は http.HandlerFunc プロトコルに準拠している必要があります。
以下は例です:
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, Golang HTTP server!") }
上記のコードでは、HTTP リクエストを受け入れ、「Hello, Golang HTTP サーバー!」をクライアントに返すハンドラー関数が定義されています。次に、http.HandleFunc() 関数を使用して URL「/」にハンドラー関数を登録し、http.ListenAndServe() 関数を使用して HTTP サーバーを起動します。
このコード行により、サーバーはポート 8080 でローカルにリッスンし、このポートに入るすべてのリクエストは処理のために http パッケージに渡されます。
このプログラムをコマンド ラインで実行し、Web ページ http://localhost:8080/ を開くと、「Hello, Golang HTTP サーバー!」というメッセージが表示されます。
http パッケージは基本的なルーティング機能を実装していますが、複数の HTTP メソッド、複数のパラメータ、およびその他の高度なルーティングをサポートするにはまだ十分な柔軟性がありません。関数。したがって、実際の開発では通常、サードパーティのルーティング パッケージが使用されますが、その中で最も一般的なのはマルチプレクサです。
mux は、Golang の HTTP リクエストを処理するために使用できる強力な HTTP リクエスト ルーターおよびスケジューラです。 mux は、正規表現マッチング、ミドルウェアなどを含む、多くの高度なルーティング機能を提供します。
これは例です:
package main import ( "fmt" "net/http" "github.com/gorilla/mux" ) func main() { r := mux.NewRouter() r.HandleFunc("/", homeHandler).Methods(http.MethodGet) r.HandleFunc("/products", productsHandler).Methods(http.MethodGet) r.HandleFunc("/products/{key}", productHandler).Methods(http.MethodGet) http.ListenAndServe(":8080", r) } func homeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Home Page") } func productsHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Product Page") } func productHandler(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) key := vars["key"] fmt.Fprintf(w, "Product ID: %s", key) }
上の例では、mux.NewRouter() 関数を使用して新しいルーターを作成します。
r.HandleFunc() 関数を使用して、ルーターにルーティング ルールを追加します。
コンテナの起動後にブラウザが http://localhost:8080/ に入力する GET リクエストに正確に対応し、ルーターはルート "/" と照合して homeHandler() 関数を呼び出します。
これは、コンテナーの開始後にブラウザーが http://localhost:8080/products に入力する GET リクエストに正確に対応し、ルーターはルート「/products」と照合して productsHandler() 関数を呼び出します。
コンテナの起動後にブラウザが入力した http://localhost:8080/products/123 の GET リクエストに正しく対応し、ルーターはルート "/products/{key}" と一致し、 productHandler() 関数を呼び出します。ここで、「123」は変数「key」の値です。
この記事では、Golang を使用して HTTP ルーティングを実装する 2 つの方法、標準ライブラリ http パッケージとサードパーティ ルーティング パッケージ mux を紹介します。標準ライブラリの http パッケージはシンプルで使いやすいですが、高度なルーティング機能をサポートできるほど柔軟性がありません。したがって、実際の開発では、さまざまな Web アプリケーションのニーズを満たす豊富なルーティング ルールと高度な機能を提供するサードパーティのルーティング パッケージ mux を使用することをお勧めします。
以上がgolang は http ルーティングを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。