Функция http.FileServer
Функция http.FileServer создает HTTP-обработчик,
который обслуживает статические файлы из указанной директории.
В первый параметр она принимает корневую файловую систему
http.FileSystem, которая обычно создается с помощью
функции http.Dir. Возвращаемый обработчик реализует
интерфейс http.Handler и может быть передан в
функции http.Handle или http.HandleFunc.
Синтаксис
http.FileServer(root http.FileSystem) http.Handler
Пример
Давайте создадим простой файловый сервер для директории "./static":
package main
import (
"net/http"
)
func main() {
fs := http.FileServer(http.Dir("./static"))
http.Handle("/", fs)
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода:
"Сервер запущен на порту 8080, файлы доступны по адресу http://localhost:8080"
В этом примере все файлы из директории ./static становятся доступными по корневому пути.
Пример
Давайте обслужем файлы по пути "/public", используя функцию http.StripPrefix:
package main
import (
"net/http"
)
func main() {
fs := http.FileServer(http.Dir("./files"))
http.Handle("/public/", http.StripPrefix("/public/", fs))
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода:
"Сервер запущен, файлы доступны по адресу http://localhost:8080/public/"
Функция http.StripPrefix удаляет указанный префикс из URL-пути перед тем, как файл будет запрошен из директории.
Пример
Давайте создадим обработчик с кастомной корневой файловой системой:
package main
import (
"net/http"
"os"
)
func main() {
root := http.Dir("./assets")
fs := http.FileServer(root)
http.Handle("/assets/", http.StripPrefix("/assets/", fs))
// Проверка существования директории
if _, err := os.Stat("./assets"); os.IsNotExist(err) {
panic("Директория ./assets не существует")
}
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода:
"Сервер запущен на порту 8080, файлы доступны по адресу http://localhost:8080/assets/"
В этом примере мы проверяем существование директории и обслуживаем файлы с префиксом /assets.
Смотрите также
-
функцию
http.StripPrefix,
которая удаляет префикс из пути запроса -
функцию
http.ServeFile,
которая обслуживает отдельный файл по запросу -
функцию
http.ServeContent,
которая обслуживает содержимое файла с поддержкой заголовков -
функцию
http.Handle,
которая регистрирует обработчик для указанного паттерна