そのタスクは、Golang net / httpパッケージを使用すると非常に簡単です。
あなたがする必要があるのは:
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
静的ファイルがstatic
プロジェクトのルートディレクトリにある名前のフォルダにあると仮定します。
フォルダ内static
にある場合は、index.html
ファイルを呼び出す必要があります。http://localhost:3000/
これにより、使用可能なすべてのファイルが一覧表示されるのではなく、そのインデックスファイルがレンダリングされます。
さらに、そのフォルダ内の他のファイル(たとえばhttp://localhost:3000/clients.html
)を呼び出すと、ブラウザによって適切にレンダリングされたそのファイルが表示されます(少なくともChrome、Firefox、Safari :))
更新:「/」とは異なるURLからファイルを提供
ファイルを提供したい場合、たとえば./public
URLの下のフォルダから:追加の関数localhost:3000/static
を使用する必要があります:次のfunc StripPrefix(prefix string, h Handler) Handler
ように:
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
http.ListenAndServe(":3000", nil)
}
そのおかげで、からのすべてのファイル./public
はで利用可能ですlocalhost:3000/static
http.StripPrefix
機能がない場合、ファイルにアクセスしようとするlocalhost:3000/static/test.html
と、サーバーはファイルを検索します./public/static/test.html
これは、サーバーがURI全体をファイルへの相対パスとして扱うためです。
幸い、組み込み関数で簡単に解決できます。
/static/
違うの/static
ですか?