初学者围棋问题我有这个目录结构。app_executablehtml | - index.htmldata | - static_file.json我无法让它为static_file.jsonin服务data/static_file.json。func main() { // this works and serves html/index.html html := http.FileServer(http.Dir("html")) http.Handle("/", html) // this always 404's data := http.FileServer(http.Dir("data")) http.Handle("/data/", data) fmt.Println("Listening on port " + port + "...") log.Fatal(http.ListenAndServe(port, nil))}任何帮助表示赞赏!
1 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
问题在于 FileServer 处理程序实际上正在此路径上查找文件:
./data/data/static_file.json
代替
./data/statif_file.json
如果您使第一个文件存在,您的代码将起作用。您可能想要做的是:
data := http.FileServer(http.Dir("data"))
http.Handle("/", data)
或者
data := http.FileServer(http.Dir("data"))
http.Handle("/data/", http.StripPrefix("/data/", data))
我会选择前者,因为这可能是您真正想要做的。将处理程序附加到根目录,任何匹配 /data/ 的内容都将按预期返回。
如果您查看从调用中实际返回的内容
data := http.FileServer(http.Dir("data"))
你会看到它是
&http.fileHandler{root:"data"}
这就是说根位于 ./data,因此请尝试在该根下查找与请求路径匹配的文件。在你的情况下,路径是 data/static_file.json 所以最终它会检查不存在的 ./data/data/static_file.json 并且它是 404s
- 1 回答
- 0 关注
- 238 浏览
添加回答
举报
0/150
提交
取消