Я заметил, что есть два способа указать путь в gorilla/mux
роутере:
r.PathPrefix("/api").Handler(APIHandler)
И:
r.Handle("/api", APIHandler)
В чем разница?
Кроме того, я не понимаю разницы между маршрутизатором и маршрутом в контексте gorilla/mux
.
PathPrefix()
возвращает маршрут, который имеет метод Handler()
. Однако мы не можем вызывать Handler()
на маршрутизаторе, мы должны вызывать Handle()
.
Посмотрите на следующий пример:
r.PathPrefix("/").Handler(http.FileServer(http.Dir(dir+"/public")))
Я пытаюсь обслуживать статические файлы из общедоступного каталога. Приведенное выше выражение работает без проблем. Мои HTML и JavaScript обслуживаются, как и ожидалось. Однако, как только я добавлю что-то к пути, например.
r.PathPrefix("/home").Handler(http.FileServer(http.Dir(dir+"/public")))
Затем я получаю 404, ошибка не найдена на localhost:<port>/home
.