【问题标题】:Is http.StripPrefix necessary when serving static files in Go?在 Go 中提供静态文件时是否需要 http.StripPrefix?
【发布时间】:2017-06-03 20:41:43
【问题描述】:

http.Handle("/static/", http.FileServer(http.Dir(""))) 有什么问题?

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

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

http.StripPrefix 有必要吗?

【问题讨论】:

标签: go


【解决方案1】:

不,它不是必需的,但如果您不使用它,用于查找文件的路径将包含前缀。举个例子就更清楚了,所以想象一下你的文件夹结构是:

main.go
static/
  styles.css

你提供文件:

http.Handle("/static/", http.FileServer(http.Dir("")))

然后,在yoursite.com/static/styles.css 请求文件的用户将在静态目录中获得styles.css 文件。但要使此功能起作用,您的路径必须完美对齐。

大多数人更喜欢这样做:

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

因为他们可以将其 URL 路径更改为类似于 /assets/ 而无需重命名静态目录(反之亦然 - 更改本地目录结构而不更新 URL 路径)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2023-03-13
    • 2018-05-02
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    相关资源
    最近更新 更多