静的ファイルの配信

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にアクセスする