Я пытаюсь настроить HTTP-сервер в Go, используя только стандартную библиотеку. Сервер должен иметь возможность принимать запросы в форме /:uuid
и должен обслуживать файл index.html
, а также импортированный в него файл CSS. Вот как выглядел мой код:
func indexHandler(w http.ResponseWriter, r *http.Request) {
// serve index.html
if r.URL.Path == "/" {
http.ServeFile(w, r, "./web/index.html")
} else {
// if the path is /randomwords, redirect to mapped URL
randomwords := r.URL.Path[1:]
url := getMappedURL(randomwords)
http.Redirect(w, r, url, http.StatusFound)
}
}
func main() {
http.HandleFunc("/", indexHandler)
log.Println("listening on port 5000")
http.ListenAndServe(":5000", nil)
}
Служит для html-файла и может принимать запросы типа /:something
, но проблема в том, что он не включает файл CSS. После некоторого поиска в Google я изменил основную функцию так:
func main() {
fs := http.FileServer(http.Dir("web"))
http.Handle("/", fs)
log.Println("listening on port 5000")
http.ListenAndServe(":5000", nil)
}
Служит для файлов HTML и CSS, но не допускает маршруты вида :something
. Я не могу понять, как использовать обе эти функции.