答案:使用 net/http 包可轻松实现静态文件服务器。通过 http.ServeFile 提供单个文件,或用 http.FileServer 服务整个目录,结合 http.StripPrefix 可添加路径前缀,如 /static/,并支持根路径重定向和日志输出。

用Golang实现一个简单的静态文件服务器非常直接,主要依赖标准库中的 net/http 包。你不需要引入任何第三方依赖,几行代码就能启动一个能提供静态文件的服务。
使用 net/http.ServeFile 提供单个文件
如果你只想提供某个特定文件(比如 index.html),可以这样写:
package mainimport ( "net/http")func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "index.html") }) http.ListenAndServe(":8080", nil)}
访问 http://localhost:8080 就会返回当前目录下的 index.html 文件。
使用 http.FileServer 提供整个目录
更常见的是提供整个目录下的所有静态文件,比如前端资源(HTML、CSS、JS、图片等)。这时可以用 http.FileServer:
立即学习“go语言免费学习笔记(深入)”;
package mainimport ( "net/http")func main() { fs := http.FileServer(http.Dir("./static")) http.Handle("/", fs) http.ListenAndServe(":8080", nil)}
这段代码会把当前目录下 static 文件夹中的所有文件作为静态资源提供。比如:
static/index.html → 可通过 /index.html 访问 static/css/style.css → 可通过 /css/style.css 访问
添加基本路径前缀(可选)
如果你想通过某个前缀(如 /assets/)访问静态文件,可以用 http.StripPrefix:
http.Handle("/assets/", http.StripPrefix("/assets/", fs))
这样用户访问 /assets/image.png 时,服务器会从 static 目录查找 image.png。
完整示例(带日志)
加一点日志输出,方便调试:
package mainimport ( "log" "net/http")func main() { fs := http.FileServer(http.Dir("./static")) http.Handle("/static/", http.StripPrefix("/static/", fs)) // 可选:根路径重定向到 index.html http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if r.URL.Path == "/" { http.Redirect(w, r, "/static/index.html", http.StatusFound) return } }) log.Println("Server starting on :8080...") log.Fatal(http.ListenAndServe(":8080", nil))}
这个版本:
把 static 目录映射到 /static/ 路径 访问根路径时跳转到 index.html 打印启动日志,出错时提示基本上就这些。Golang 的标准库已经足够强大,不复杂但容易忽略。
以上就是如何用Golang实现一个简单的静态文件服务器的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1401677.html
微信扫一扫
支付宝扫一扫