gpt4 book ai didi

go - http.FileServer 在文件存在时总是 404

转载 作者:IT王子 更新时间:2023-10-29 02:16:29 25 4
gpt4 key购买 nike

初学者围棋题

我有这个目录结构。

app_executable
html
|
- index.html
data
|
- static_file.json

我无法让它为 data/static_file.json 中的 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))
}

感谢任何帮助!

最佳答案

问题是 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

关于go - http.FileServer 在文件存在时总是 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27627702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com