在http.HandlerFunc中调用http.FileServer

时间:2017-01-21 00:44:58

标签: html http go static

所以我最近遇到了一些麻烦...这是我的代码:

https://gist.github.com/anonymous/af1e6d922ce22597099521a4b2cfa16f

我的问题:我正在尝试从文件夹中提供一些HTML文件:./docs/html。我的文件夹结构:

.
├── docs
│   └── html
│       ├── index.html
│       └── rest.html
└── main.go

你会注意到我在ServeHTTP ServeDocs上调用http.HandlerFunc方法,然后通过路由器(mux.Router)。我遇到的问题是由于某种原因,localhost:8080/上提供的唯一文件是index.html,当我导航到localhost:8080/rest.html时,我得到了404.

真正奇怪的是,当我删除所有路由器代码并执行以下操作时:

fs := http.FileServer(http.Dir("./docs/html"))
http.Handle("/", fs)

log.Println("Listening...")
http.ListenAndServe(":3000", nil)

一切都按预期运作。谁知道发生了什么事?我花了好几个小时试图解决这个问题,但我终于放弃了。

1 个答案:

答案 0 :(得分:1)

如果您使用mux.Router的{​​{1}}方法

,则会有效
Path

而不是r.Methods(route.Method).Name(route.Name).Handler(handler) r.Path(route.Pattern) 的{​​{1}}方法(下面的删除线)

  

r.Methods(route.Method)。路径(route.Pattern)请将.Name(route.Name).Handler(处理程序)

我对mux.Route不太熟悉,所以找不到确切原因。