以下是如何在 Go 1.22 中使用新的 ServeMux
功能的一些基本示例:
创建新的 ServeMux
实例:
mux := http.NewServeMux()
使用 HandleFunc
方法注册路由:
mux.HandleFunc("GET /path/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "got path\n")
})
使用路径变量:
mux.HandleFunc("/task/{id}/", func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")
fmt.Fprintf(w, "handling task with id=%v\n", id)
})
指定 HTTP 方法:
mux.HandleFunc("POST /task/", server.createTaskHandler)
mux.HandleFunc("GET /task/", server.getAllTasksHandler)
mux.HandleFunc("DELETE /task/", server.deleteAllTasksHandler)
监听和提供服务:
http.ListenAndServe(":8080", mux)
这些新特性使得 ServeMux
在处理复杂的路由模式时更加灵活和强大,减少了对第三方库如 gorilla/mux
的依赖。如果你的项目之前使用了第三方路由库,现在可以考虑迁移到标准库的 ServeMux
,以简化代码和依赖管理。