静的ファイルの配信
Webサーバは、リクエストに応じた動的コンテンツを提供しますが、
静的なファイル(HTML/CSS/JavaScript/画像など)も提供できます。
Go標準ライブラリのnet/http
パッケージを利用して、静的ファイルを配信する方法を説明します。
静的ファイルの配信方法
次は静的ファイルの配信するサンプルです。
package main
import (
"net/http"
)
func main() {
mux := http.NewServeMux()
// 公開したいディレクトリを指定
fileServer := http.FileServer(http.Dir("./public"))
// /staticに公開する
mux.Handle("/static/", http.StripPrefix("/static/", fileServer))
server := http.Server{
Addr: ":8080",
Handler: mux,
}
server.ListenAndServe()
}
このプログラムのポイントは次の通りです。
http.FileServer
に公開したいディレクトリを指定して、ハンドラを作成する- 作成したハンドラをマルチプレクサに登録する
- URLのプレフィックスは
http.StripPrefix
で除外する(除外しないと、URL『/static/a』にファイル『./public/static/a』が対応してしまう)
次の手順で静的ファイルが配信されることを確認します。
- 現在のディレクトリに
public
ディレクトリを作成し、適当なファイルを格納する - Webサーバを起動し、Webブラウザで
http://localhost:8080/static
にアクセスする