gpt4 book ai didi

go - 你如何使用 chi 路由器提供静态文件

转载 作者:行者123 更新时间:2023-12-03 10:09:10 26 4
gpt4 key购买 nike

我刚开始在较小的项目中使用 chi,我很好奇这里是如何处理静态文件服务的。完成它的最短方法是什么?
这是我尝试的文件服务

fs := http.FileServer(http.Dir("static"))
router.Handle("/static", http.StripPrefix("/static/", fs))
但是,这不起作用,所以我直接从他们的 repo 中尝试了这个例子:
func fileServer(r chi.Router, serverRoute string, pathToStaticFolder http.FileSystem) {
if strings.ContainsAny(serverRoute, "{}*") {
panic("FileServer does not permit any URL parameters.")
}

if serverRoute != "/" && serverRoute[len(serverRoute)-1] != '/' {
r.Get(serverRoute, http.RedirectHandler(serverRoute+"/", 301).ServeHTTP)
serverRoute += "/"
}
serverRoute += "*"

r.Get(serverRoute, func(w http.ResponseWriter, r *http.Request) {
rctx := chi.RouteContext(r.Context())
serverRoutePrefix := strings.TrimSuffix(rctx.RoutePattern(), "/*")
fs := http.StripPrefix(serverRoutePrefix, http.FileServer(pathToStaticFolder))
fs.ServeHTTP(w, r)
})
}

dir, _ := os.Getwd()
filesDir := http.Dir(filepath.Join(dir, "static"))
fileServer(router, "/", filesDir)
不幸的是,这两种方法都行不通,我目前不知所措。曾经使用 Chi 作为路由器的任何人,您如何提供静态文件?
这是我的文件夹结构
project
|_ main.go
|_ static
|_css
|_index.css
|_img
|_js

最佳答案

您应该将路由器中注册的路径修改为

router.Handle("/static/*", http.StripPrefix("/static/", fs))
*代表不同的文件名。

关于go - 你如何使用 chi 路由器提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65880069/

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