Go言語で静的ファイルをサーブする方法(http.FileServer)
生徒
「先生、Go言語で作ったWebアプリで画像やCSSファイルを表示したいんですが、どうしたらいいですか?」
先生
「その場合は静的ファイルをサーブする仕組みを使います。Go言語ではhttp.FileServerが便利です。」
生徒
「静的ファイルって具体的には何ですか?」
先生
「静的ファイルとは、Webページで表示する画像やCSS、JavaScriptのように、内容が変わらないファイルのことです。」
生徒
「なるほど、画像やスタイルシートは毎回同じだから静的ファイルなんですね!」
先生
「そうです。では、実際にhttp.FileServerを使って静的ファイルを配信する方法を見ていきましょう。」
1. http.FileServerで静的ファイルをサーブする基本
Go言語ではhttp.FileServerを使うと、指定したディレクトリにあるファイルをWebブラウザに配信できます。基本的にはhttp.Handleと組み合わせます。
package main
import (
"net/http"
)
func main() {
fs := http.FileServer(http.Dir("./static"))
http.Handle("/static/", http.StripPrefix("/static/", fs))
http.ListenAndServe(":8080", nil)
}
このコードでは、プロジェクト内のstaticフォルダにある画像やCSS、JavaScriptをブラウザからアクセスできるようにしています。
2. http.StripPrefixでURLの整理
ブラウザからのアクセスURLには/static/と書きますが、実際のフォルダは./staticです。http.StripPrefixを使うと、URLの先頭部分を取り除いてフォルダに正しくアクセスできます。
http.Handle("/static/", http.StripPrefix("/static/", fs))
これで、ブラウザのURLがhttp://localhost:8080/static/image.pngでも、Goは./static/image.pngを返すことができます。
3. 静的ファイルの活用例
静的ファイルをサーブすると、Webページで画像やスタイルを簡単に表示できます。例えば、HTMLファイルからCSSを読み込むときにも使えます。
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<h1>Goで静的ファイルを表示</h1>
<img src="/static/image.png" alt="サンプル画像">
</body>
</html>
ブラウザにアクセスすると、CSSのスタイルが反映され、画像も表示されます。
4. 注意点とポイント
- 静的ファイルは更新しても内容が変わらないものに使う
- ディレクトリ構造とURLパスを一致させることが大切
http.StripPrefixを使うことでURLとフォルダ名のズレを調整できる- Go言語でWebアプリを作るときは、まず静的ファイルをサーブできるようにするとHTMLやCSSの学習がスムーズ
http.FileServerを使えば、初心者でも簡単に画像やCSS、JavaScriptなどの静的ファイルをWebブラウザに表示できます。これにより、見た目のあるWebページを作成することが可能です。