所以我最近遇到了一些麻烦...这是我的代码:
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)
一切都按预期运作。谁知道发生了什么事?我花了好几个小时试图解决这个问题,但我终于放弃了。
答案 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
不太熟悉,所以找不到确切原因。