Отправка статики в Golang (сервер на heroku)
Не могу разобраться с отправкой статических файлов в Golang на фреймворке martini (дело даже не в Golang, я просто никогда не имел с этим дела, а martini используется по банальной причине - самое первое и простое что попалось на глаза). На локальном компьютере все работает. На heroku - грузится только главный index.html, который идет без статики (static/index.html). А вот документация сгенерированная apidoc (в каталоге doc корня сервера) грузится не хочет. Вся статика документации почему-то становится недоступной.
2020-11-29T15:53:22.735245+00:00 app[web.1]: [martini] Started GET /css/style.css for 176.52.35.182
2020-11-29T15:53:22.735389+00:00 app[web.1]: [martini] Completed 404 Not Found in 170.062µs
и т.д.
func (trs *Translater) ApiHandler(w http.ResponseWriter, r *http.Request) {
indexPath := filepath.Join(trs.Exe.Dir, "doc", "index.html")
index, err := ioutil.ReadFile(indexPath)
if err != nil {
log.Errorf("[API INDEX] %s", err)
} else {
w.Write(index)
}
}
func (trs *Translater) IndexHandler(w http.ResponseWriter, r *http.Request) {
indexPath := filepath.Join(trs.Exe.Dir, "static", "index.html")
index, err := ioutil.ReadFile(indexPath)
if err != nil {
log.Errorf("[MAIN INDEX] %s", err)
} else {
w.Write(index)
}
}
Собственно, роутинг:
m := martini.Classic()
m.Use(martini.Static("doc",
martini.StaticOptions{Prefix: "/api/", IndexFile:"index.html"}))
m.Use(martini.Static("doc/css/",
martini.StaticOptions{Prefix: "/css/"}))
m.Use(martini.Static("doc/fonts/",
martini.StaticOptions{Prefix: "/fonts/"}))
m.Use(martini.Static("doc/img/",
martini.StaticOptions{Prefix: "/img/"}))
m.Use(martini.Static("doc/locales/",
martini.StaticOptions{Prefix: "/locales/"}))
m.Use(martini.Static("doc/utils/",
martini.StaticOptions{Prefix: "/utils/"}))
m.Use(martini.Static("doc/vendor/",
martini.StaticOptions{Prefix: "/vendor/"}))
m.Use(martini.Static("static",
martini.StaticOptions{Prefix: "static", IndexFile:"index.html"}))
m.Get(`/`, trs.IndexHandler)
m.Get(`/api`, trs.ApiHandler)