У меня есть такой маршрутизатор
r := mux.NewRouter()
r.PathPrefix("/static/styles/").Handler(http.StripPrefix("/static/styles/",
http.FileServer(http.Dir("static/styles"))))
book := r.PathPrefix("/books").Subrouter()
book.HandleFunc("/issued-books/", IssuedBooks)
book.HandleFunc("/top-trending/", ShowTopTrending)
book.HandleFunc("/", ShowAllBooks)
book.HandleFunc("/available/", ShowAvailable)
r.HandleFunc("/", ShowHome)
http.ListenAndServe(":8080", r)
Структура функции обработчика basi c приведена ниже:
func ShowAvailable(w http.ResponseWriter, r *http.Request) {
tmp := Store{}
for ix, val := range JSON.Books {
status := &val.IssueStatus
if *status == false {
tmp.Books = append(tmp.Books, JSON.Books[ix])
}
}
renderTemplate(&w, "available.html", &tmp)
}
renderTemplate определяется следующим образом:
func renderTempate(w *http.ResponseWriter, filename string, tmp *Store) {
path := "static/" + filename
tmpl := template.Must(template.ParseFiles(path))
buf := new(bytes.Buffer)
if err := tmpl.ExecuteTemplate(buf, filename, *tmp); err != nil {
http.Error(*w, err.Error(), http.StatusInternalServerError)
return
}
mime.AddExtensionType(".css", "text/css; charset=utf-8")
res := *w
res.Write(buf.Bytes())
res.(http.Flusher).Flush()
}
Первая проблема заключается в том, что он никогда не отображает файл css правильно .... браузер всегда заканчивает тем, что говорит .... Отказался от применения таблицы стилей из / path / to / css ...., потому что его Тип MIME ('text / plain') не поддерживается MIME-типом таблицы стилей .... и я попытался использовать пакет MIME для его правильной установки непосредственно перед отправкой обработанного шаблона клиенту, но он все равно не будет работать.
Вторая проблема заключается в том, что рендеринг HTML становится несогласованным .... отображается только страница ShowAllBooks, другие нет, выдавая ошибку 404 ... для этого я попытался удалить forward sla * sh из путей URL и это все страницы отображаются ... так что вперед sla sh влияет на визуализацию страницы ... любая помощь очень ценится