ホームページ > バックエンド開発 > Golang > Go の同じポートで Web ページと API ルートを提供するにはどうすればよいですか?

Go の同じポートで Web ページと API ルートを提供するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-30 16:58:11
オリジナル
972 人が閲覧しました

How to Serve Web Pages and API Routes on the Same Port in Go?

異なるハンドル パターンを使用して同じポートで Web ページと API ルートを提供する

次を使用して同じポートで Web ページと API ルートの両方を提供する明確なハンドル パターンは、Web 開発における一般的な要件です。 Go で net/http パッケージを使用してこれを実現する方法は次のとおりです。

net/http パッケージは、受信 HTTP リクエストの一連のハンドラーを管理する ServeMux タイプを提供します。ハンドラーの登録は、Handle メソッドを介して行われます。ドキュメントによると、長いパターンは短いパターンよりも優先されます。このプロパティを利用して、Web ページと API ルートを同じポートで同時に提供できます。

たとえば、Web ページをルート パス / で提供し、API ルートを /api で提供するには、次のコードを使用できます。

fs := http.FileServer(http.Dir("server/webapps/play_maths"))
http.Handle("/", fs) // Handles web pages at root path

apiRoutes := UserRoutes() // Initialize API routes as a handler
http.Handle("/api", apiRoutes.ServeHTTP) // Handles API routes
ログイン後にコピー

UserRoutes 関数は、API ルートのサブルータを作成します。デフォルトでは、サブルーターは親ルーターのプレフィックスを継承しますが、PathPrefix メソッドを使用してこの動作をオーバーライドできます。その後、ルーターは API ルートのハンドラーとして使用されます。

API ルート ハンドラーの前に Web ページ ハンドラーを登録し、Web ページ ハンドラーのパターンが確実に短くなるようにすることで、パターンが長くなることを利用しています。優先します。その結果、/api で始まるリクエストは API ルート ハンドラーによって処理され、他のすべてのリクエスト (ルート パスへのリクエストを含む) は Web ページ ハンドラーによって処理されます。

このアプローチは、複数のプロセスを実行したり、リバース プロキシを使用したりすることなく、同じサーバー上でさまざまな種類の HTTP リクエストを処理する柔軟な方法です。

以上がGo の同じポートで Web ページと API ルートを提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート