Go の net/http パッケージでは、Web サーバーの「ファイル システム ルート」は次のとおりです。実行可能ファイルのディレクトリに直接関連付けられていません。代わりに、サーバーに登録されているハンドラーに依存します。
ハンドラーは、受信 HTTP リクエストを処理するためのロジックを提供します。ハンドラーを登録するとき、開発者はハンドラーが提供する URL パターンを指定できます。指定された「ルート」URL はなく、ハンドラーは任意の URL プレフィックスにマップできます。
静的ファイル サーバー機能が必要な場合、http パッケージは FileServer() 関数を提供します。入力としてディレクトリを受け取り、そのディレクトリから静的ファイルを提供するハンドラを返します。
FileServer() を使用する場合、静的ファイルの「ルート」がパラメータとして指定されます。絶対パスが指定された場合は、指定されたフォルダーを直接参照します。
ただし、相対パスが使用された場合は、現在のディレクトリまたは作業ディレクトリを基準として解釈されます。デフォルトでは、これはアプリケーションが開始されるフォルダーです。
たとえば、次のようにハンドラーを登録すると、
http.Handle("/", http.FileServer(http.Dir("/tmp")))
ハンドラーは「/tmp」から静的ファイルを提供します。 " ディレクトリ、ルート URL "/" はこのディレクトリにマップされます。
ディレクトリを別の URL パスにマップするには、StripPrefix() を使用できます。 関数。たとえば、「/tmpfiles」URL プレフィックスの下で「/tmp」を提供したい場合は、次のように使用できます。
http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
これにより、リクエスト URL から「/tmpfiles」プレフィックスが削除される前に削除されます。
Web アプリケーションを設定し、URL プレフィックスを目的のファイルやファイルに正しくマッピングするには、これらの概念を理解することが重要です。ハンドラー。
以上がGo の「net/http」パッケージは Web サーバーのファイルシステム ルートをどのように決定するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。