用Go标准库net/http可轻松编写轻量Web服务器:定义func(http.ResponseWriter, *http.Request)类型处理函数,用http.HandleFunc注册路由,调用http.ListenAndServe启动服务;支持手动解析路径参数和返回JSON响应。

用 Go 写一个简单 Web 服务器非常轻量,标准库 net/http 就够用了,不需要额外框架。核心是注册路由(URL路径)和绑定处理函数,再启动服务。
每个路由对应一个函数,类型必须是 func(http.ResponseWriter, *http.Request)。第一个参数用于写响应内容,第二个是请求对象,可读取 URL、Header、Body 等。
例如:
func homeHandler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(200)
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
fmt.Fprintln(w, "欢迎访问首页")
}使用 http.HandleFunc 把路径和处理函数关联起来;然后调用 http.ListenAndServe 启动监听。
立即学习“go语言免费学习笔记(深入)”;
常见做法:
"/" 绑定首页处理函数"/api/users" 可绑定不同逻辑":8080"(冒号开头表示监听所有接口)nil 表示使用默认的 http.DefaultServeMux
func main() {
http.HandleFunc("/", homeHandler)
http.HandleFunc("/about", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "关于我们")
})
fmt.Println("服务器运行在 :8080")
http.ListenAndServe(":8080", nil)
}标准库不直接支持 /user/:id 这类动态路由,但可以用简单字符串处理或第三方库(如 gorilla/mux)。如果不想引入依赖,可手动解析 r.URL.Path:
func userHandler(w http.ResponseWriter, r *http.Request) {
path := strings.TrimPrefix(r.URL.Path, "/user/")
if path == "" {
http.Error(w, "缺少用户ID", http.StatusBadRequest)
return
}
fmt.Fprintf(w, "查看用户: %s", path)
}
// 注册为 /user/
http.HandleFunc("/user/", userHandler)Web API 常需返回 JSON。注意设置正确的 Header,并用 json.Encoder 或 json.Marshal 编码数据:
type User struct {
ID int `json:"id"`
Name string `json:"name"`
}
func apiUserHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
json.NewEncoder(w).Encode(User{ID: 1, Name: "张三"})
}不复杂但容易忽略:记得检查错误(比如 json.Encoder.Encode 可能失败)、避免在 handler 中 panic(可用中间件 recover)、开发时加日志方便调试。
以上就是如何使用Golang实现简单Web服务器_创建HTTP路由和响应处理的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号