在Go中提供静态文件时是否需要http.StripPrefix?

在Go中提供静态文件时是否需要http.StripPrefix?,go,Go,http.Handle(“/static/”),http.FileServer(http.Dir(“”))有什么问题 我能找到的最短示例如下所示: fs := http.FileServer(http.Dir("static")) http.Handle("/static/", http.StripPrefix("/static/", fs)) http.StripPrefix必要吗?不需要,但如果不使用它,用于查找文件的路径将包含前缀。通过一个示例可以更清楚地看到这一点,因此请想象您的文件夹

http.Handle(“/static/”),http.FileServer(http.Dir(“”))有什么问题

我能找到的最短示例如下所示:

fs := http.FileServer(http.Dir("static"))
http.Handle("/static/", http.StripPrefix("/static/", fs))

http.StripPrefix
必要吗?

不需要,但如果不使用它,用于查找文件的路径将包含前缀。通过一个示例可以更清楚地看到这一点,因此请想象您的文件夹结构是:

main.go
static/
  styles.css
您提供的文件包括:

http.Handle("/static/", http.FileServer(http.Dir("")))
然后,在
yoursite.com/static/styles.css
请求文件的用户将在static dir中获得styles.css文件。但要想做到这一点,你的道路必须完美地排列

大多数人更喜欢做以下事情:

fs := http.FileServer(http.Dir("static"))
http.Handle("/static/", http.StripPrefix("/static/", fs))
因为他们可以将URL路径更改为类似于
/assets/
,而无需重命名静态目录(反之亦然-通过更新URL路径来更改本地目录结构)

TL;DR-Path前缀不是必需的,但对于打破URL路径和本地目录结构完美匹配的任何要求非常有用。

请查看