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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 16:58:11971ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。