Пример работы файлового сервера для go-chi:
r := chi.NewRouter()
... ... ...
fileServer(r)
... ... ...
// fileServer is serving static files.
func fileServer(router *chi.Mux) {
root := "./frontend"
fs := http.FileServer(http.Dir(root))
router.Get("/*", func(w http.ResponseWriter, r *http.Request) {
if _, err := os.Stat(root + r.RequestURI); os.IsNotExist(err) {
w.WriteHeader(http.StatusNotFound)
return
} else {
fs.ServeHTTP(w, r)
}
})
}
До начала работы нужно задать root — корневую папку для работы файлового сервера.
Все запросы начинающиеся на /* будут идти на заданный файловый сервер. Возможно также задать только определенный роут, допустим /static/*