Эта задача очень проста с пакетом 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
?