Go を使用した Web 開発の領域では、net/http パッケージが開発者に力を与えますWeb サービスを構築するための強力なツールを備えています。ただし、ファイルシステム構造に関して言えば、「ルート」ディレクトリの概念は、Go の初心者にはすぐには理解できないかもしれません。この記事は、このトピックに光を当てることを目的としています。
静的ファイルサーバーとは異なり、Go の net/http Web サーバーはハンドラーを使用して動作します。これらのハンドラーは、HTTP 要求の処理と応答の生成を担当します。ハンドラーを特定の URL にマップするには、開発者は Handle() 関数または HandleFunc() 関数を利用します。
ただし、Go には http パッケージに FileServer() 関数が含まれており、これによりハンドラーの作成が可能になります。指定されたディレクトリから静的ファイルを提供します。このディレクトリは事実上、静的コンテンツを提供するための「ルート」になります。
FileServer( )、次の 2 つのオプションがあります:
たとえば、次のコードは、相対ファイル サーバーを使用して静的ファイル サーバーを指定します。 path:
http.Handle("/", http.FileServer(http.Dir("/tmp")))
これは、現在の作業ディレクトリにあると仮定して、「/tmp」フォルダーから静的ファイルを提供します。
完全なアプリケーションを紹介するには、次のコードを検討してください。スニペット:
package main import ( "log" "net/http" ) func main() { // Static fileserver with a root of "/tmp" http.Handle("/", http.FileServer(http.Dir("/tmp"))) log.Fatal(http.ListenAndServe(":8080", nil)) }
このアプリケーションが実行されると、「/tmp」ディレクトリから静的ファイルを提供する静的 Web サーバーがセットアップされ、ルート URL /.
にマッピングされます。
より複雑な URL を実現するにはマッピングでは、Go は StripPrefix() 関数を提供します。この関数を使用すると、リクエスト URL が FileServer によって処理される前に変更できます。例:
http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
この場合、プレフィックス「/tmpfiles/」を持つ URL からそのプレフィックスが削除され、残りのパスは「/tmp」ディレクトリ内の静的ファイルにアクセスするために使用されます。
以上がGo Web サーバーのファイル提供におけるルート ディレクトリとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。