使用net/http可快速构建Web服务器。1. 调用http.HandleFunc注册路由,如”/”映射helloHandler;2. 通过http.ListenAndServe(“:8080”, nil)启动服务;3. 可注册多个处理器处理不同路径;4. 使用http.NewServeMux实现自定义路由;5. 结合http.FileServer和http.StripPrefix提供静态文件服务。

用Golang的
net/http
包构建一个简单的Web服务器非常直接,不需要额外依赖。Go语言标准库中的
net/http
提供了HTTP客户端和服务端的实现,足够应对大多数基础Web场景。
1. 创建一个最简单的HTTP服务器
使用
http.ListenAndServe
可以快速启动一个服务器。下面是一个基础示例:
package mainimport ( "fmt" "net/http")func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, 世界!")}func main() { http.HandleFunc("/", helloHandler) fmt.Println("服务器运行在 http://localhost:8080") http.ListenAndServe(":8080", nil)}
说明:
http.HandleFunc
注册一个处理函数,将指定路径(这里是”/”)映射到
helloHandler
。
helloHandler
接收两个参数:
http.ResponseWriter
用于写响应,
*http.Request
包含请求信息。
http.ListenAndServe(":8080", nil)
启动服务器并监听8080端口。第二个参数为
nil
表示使用默认的多路复用器(
DefaultServeMux
)。
2. 处理不同路由
你可以注册多个路径来响应不同的URL:
立即学习“go语言免费学习笔记(深入)”;
func aboutHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "这是关于页面。")}func main() { http.HandleFunc("/", helloHandler) http.HandleFunc("/about", aboutHandler) fmt.Println("服务器运行在 http://localhost:8080") http.ListenAndServe(":8080", nil)}
访问
/
显示“Hello, 世界!”,访问
/about
则显示“这是关于页面。”
3. 使用自定义的ServeMux(多路复用器)
为了更好的控制,可以创建自己的
http.ServeMux
:
func main() { mux := http.NewServeMux() mux.HandleFunc("/", helloHandler) mux.HandleFunc("/about", aboutHandler) fmt.Println("服务器运行在 http://localhost:8080") http.ListenAndServe(":8080", mux)}
使用自定义mux可以避免与其他包注册的路由冲突,也更清晰地管理路由逻辑。
4. 处理静态文件
使用
http.FileServer
可以轻松提供静态资源,比如HTML、CSS、JS文件:
func main() { mux := http.NewServeMux() mux.HandleFunc("/", helloHandler) mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static/")))) fmt.Println("服务器运行在 http://localhost:8080") http.ListenAndServe(":8080", mux)}
说明:
假设你有一个
static/
目录,里面存放
style.css
或
image.png
。
http.FileServer(http.Dir("static/"))
创建一个文件服务器。
http.StripPrefix
去掉URL中的
/static/
前缀,避免路径错乱。 访问
/static/style.css
就会返回
static/style.css
文件。
基本上就这些。用
net/http
包你可以快速搭建一个具备路由、静态文件服务功能的Web服务器,适合小型项目或学习用途。不复杂但容易忽略细节,比如路径前缀和请求方法判断,但掌握这些基础后,就可以逐步扩展功能了。
以上就是如何使用Golang的net/http包从零开始构建一个简单的Web服务器的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1401731.html
微信扫一扫
支付宝扫一扫