Ответ 1
Эта задача очень проста с помощью пакета 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 как относительный путь к файлу.
К счастью, его легко решить с помощью встроенной функции.