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