この章では、GoのIrisフレームワークと静的ファイルの取り扱いについて紹介します。プロジェクトには、ユーザーが直接アクセスできるようになる静的ファイルがあることがあります。これをどのように設定すればよいでしょうか?

Irisが静的ファイルを公開する

func main() {
    app := iris.New()
	// ページアイコンを設定
    app.Favicon("./resources/favicon.ico")
	// 静的ファイルのパスを設定し、URLルートをバインド
    app.HandleDir("/assets", iris.Dir("./assets"))

    app.Listen(":8080")
}

HandleDirメソッドは、第3引数のオプションとしてDirOptionsを受け入れます。

type DirOptions struct {
    // デフォルトは "/index.html" です。リクエストパスが **/*/$IndexName で終わる場合、**/*(/) にリダイレクトされ、
    // これにより別のハンドラが自動的に登録されたインデックスハンドラとしてサービスされます。このハンドラは開発者が手動で処理しない限り、
    // 自動的にサービスされます。
    IndexName string
    // 特定のリクエストパス(マップのキーのプレフィックスなし)がディレクトリではない場合(`IndexFile` であるか)
    // または `PushTargetsRegexp` に、別のクライアントリクエストなしにファイル名(マップ化された値)をサービスする場合(HTTP/2 Push)。
    // `PushTargetsRegexp` は `PushTargets` に似ていますが、再帰的にディレクトリ内のすべてのファイルと比較される正規表現を受け入れます。
    // `IndexName` が設定されている必要があります。
    // 例
    // "/": regexp.MustCompile("((.*).js|(.*).css|(.*).ico)$")
    // `iris.MatchCommonAssets` も参照してください。
    PushTargetsRegexp map[string]*regexp.Regexp
    // インメモリキャッシュと事前に圧縮されたファイルを有効にするキャッシュ。
    Cache DirCacheOptions
    // ファイルを圧縮された状態で提供する場合。
    Compress bool
    // `IndexName` が見つからない場合、現在のリクエストディレクトリ内のファイルのリストを表示します。
    ShowList bool
    // `ShowList` が true の場合、デフォルトの代わりに、現在のリクエストされたディレクトリ(dir)のファイルリストを表示するためにこの関数が使用されます。
    DirList DirListFunc
    // ダウンロードしてローカルファイルに保存します。
    Attachments Attachments
    // 各リクエストのリソースをループ処理するために使用するオプションの検証子。
    AssetValidator func(ctx *context.Context, name string) bool
}