使用 Go 构建 Web 应用程序并不复杂,标准库中的 net/http 包已经提供了服务器与路由处理的基础能力。通过简单的函数注册,就能对外提供 HTTP 接口,处理浏览器或客户端发来的请求。

一、使用标准库搭建基础服务
最基础的 Go Web 程序只需要几行代码。下面示例启动一个监听 8080 端口的服务器,并为根路径注册处理函数,返回一段文本。
package main
import (
"fmt"
"net/http"
)
// 处理根路径请求
func homeHandler(w http.ResponseWriter, r *http.Request) {
// 设置响应头内容类型
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
fmt.Fprintln(w, "欢迎使用 Go 构建 Web 应用")
}
func main() {
// 注册路由和处理函数
http.HandleFunc("/", homeHandler)
// 启动 HTTP 服务并监听端口
http.ListenAndServe(":8080", nil)
}
二、返回 JSON 数据
实际开发中接口常返回 JSON。可以用 encoding/json 包将结构体编码后写入响应体。
package main
import (
"encoding/json"
"net/http"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func userHandler(w http.ResponseWriter, r *http.Request) {
u := User{Name: "张三", Age: 20}
w.Header().Set("Content-Type", "application/json")
// 将结构体编码为 JSON 并写入响应
json.NewEncoder(w).Encode(u)
}
func main() {
http.HandleFunc("/user", userHandler)
http.ListenAndServe(":8080", nil)
}
三、使用轻量路由库
标准库路由不支持路径参数,引入第三方库 http_router 可方便匹配动态路径。下面示例展示如何获取 URL 中的用户名参数。
package main
import (
"fmt"
"net/http"
"github.com/julienschmidt/httprouter"
)
func hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
name := ps.ByName("name")
fmt.Fprintf(w, "你好, %s", name)
}
func main() {
router := httprouter.New()
// 注册带路径参数的路由
router.GET("/hello/:name", hello)
http.ListenAndServe(":8080", router)
}
四、小结
Go 语言构建 Web 应用上手快,标准库足以应付简单场景。若需要更灵活的路由和中间件,可借助社区库。理解 net/http 的请求与响应模型是写好 Go Web 程序的关键。
GoWeb开发http_router修改时间:2026-07-27 19:27:17