ホームページ > バックエンド開発 > Golang > Go の「net/http」サーバーは、固定ルート ディレクトリなしで静的ファイルの提供をどのように処理しますか?

Go の「net/http」サーバーは、固定ルート ディレクトリなしで静的ファイルの提供をどのように処理しますか?

Patricia Arquette
リリース: 2024-12-19 08:18:50
オリジナル
758 人が閲覧しました

How Does Go's `net/http` Server Handle Static File Serving Without a Fixed Root Directory?

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/」の下の「/tm​​p」からファイルを提供します。 ; 「/tmpfiles/mydoc.txt」に対するリクエストは、ファイル「/tmp/mydoc.txt」で応答します。

以上がGo の「net/http」サーバーは、固定ルート ディレクトリなしで静的ファイルの提供をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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