2017-01-21 40 views
0

所以我有一些麻煩,這最近...這裏調用http.FileServer是我的代碼:在http.HandlerFunc

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

我的問題:我試圖服務於一些來自文件夾的HTML文件:./docs/html。我的文件夾結構:

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

你會在通知要點我打電話的ServeHTTP方法上http.HandlerFunc ServeDocs,然後通過路由器(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

它的工作原理,如果你使用mux.RouterPath方法

r.Methods(route.Method).Name(route.Name).Handler(handler) 
r.Path(route.Pattern) 

,而不是mux.RoutePath法(以下strikethrough'd)

r.Methods(路線。方法) .Path(route.pattern) .Name(route.Name).Handler(handler)

我對gorilla/mux不太熟悉,所以無法找到背後的確切原因。

+0

這是如此奇怪大聲笑。經過測試,它的功能就像一個魅力!謝謝您的幫助! –