I just started using chi for smaller projects, and I was curious how static file serving is handled here. What's the shortest way to accomplish it?
Here's what I tried for file serving
fs := http.FileServer(http.Dir("static"))
router.Handle("/static", http.StripPrefix("/static/", fs))
However, this did not work, so I tried this example straight from their 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)
Unfortunately, neither way works, and I'm currently at a loss. Anyone who's ever used Chi as their router, how do you serve static files?
Here's my folder structure
project
|_ main.go
|_ static
|_css
|_index.css
|_img
|_js
question from:
https://stackoverflow.com/questions/65880069/how-do-you-serve-static-files-with-chi-router 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…