Go の Web サーバーの「ルート」ディレクトリを公開する
Go の net/http Web サーバーにおける固定の「ルート」の概念ファイルを提供するディレクトリがありません。代わりに、ハンドラーを使用して URL リクエストに応答し、コンテンツ配信の柔軟性と制御を強化します。
ハンドラー マッピング
ハンドラーは、HTTP リクエストを処理する関数です。そして、対応する応答を生成します。 URL は、Handle() 関数または HandleFunc() 関数を使用してハンドラーに関連付けられます。 HTTP リクエストを受信すると、サーバーはリクエストされた URL と登録されたハンドラを照合して、リクエストを処理するハンドラを決定します。
静的ファイル
静的ファイルの処理用, Go は FileServer() 関数を提供します。指定された「ルート」ディレクトリからファイルを提供するハンドラーを返します。このディレクトリは絶対パスまたは相対パスとして指定できます。
絶対パス
FileServer() で絶対パスが使用される場合、「ルート」ディレクトリは明確です。 .
相対ただし、パス
相対パスは、現在の作業ディレクトリ (通常はアプリケーションが開始されたディレクトリ) に依存します。例:
http.Handle("/", http.FileServer(http.Dir("/tmp")))
これは、ルート URL "/" にマップされた "/tmp" ディレクトリからファイルを提供するハンドラーを割り当てます。したがって、「/mydoc.txt」への応答はファイル「/tmp/mydoc.txt」になります。
複雑なマッピング
より複雑なマッピング シナリオは次のようになります。これは、リクエスト URL パスを FileServer() に渡す前に変更する StripPrefix() 関数で実現されます。これにより、ルート URL とは異なるディレクトリまたはパスからファイルを提供できるようになります。
例:
http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
この設定では、URL パス「/tmpfiles/」の下の「/tmp」からファイルを提供します。 ; 「/tmpfiles/mydoc.txt」に対するリクエストは、ファイル「/tmp/mydoc.txt」で応答します。
以上がGo の「net/http」サーバーは、固定ルート ディレクトリなしで静的ファイルの提供をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。