Я не могу заставить мой подчиненный работать должным образом - PullRequest
1 голос
/ 06 января 2020

У меня есть такой маршрутизатор

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 влияет на визуализацию страницы ... любая помощь очень ценится

1 Ответ

0 голосов
/ 06 января 2020

Удалить конечную косую черту для маршрутов:


    book.HandleFunc("/issued-books", IssuedBooks)
    book.HandleFunc("/top-trending", ShowTopTrending)
    book.HandleFunc("/", ShowAllBooks)
    book.HandleFunc("/available", ShowAvailable)

css поддерживается GO из коробки - https://github.com/golang/go/blob/master/src/mime/type.go#L60

Проверьте, что именно сервер возвращает для css ссылок. Это может быть 404?

...