異なるハンドル パターンを使用して同じポートで 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 サイトの他の関連記事を参照してください。