github.com/gorilla/mux
是 Go 语言中一个流行的 HTTP 路由库(属于 Gorilla Web Toolkit 的一部分),用于构建灵活的 Web 服务路由。以下是关键信息和使用示例:
核心功能
动态路由
支持路径变量(如/users/{id}
)和正则表达式匹配。r := mux.NewRouter() r.HandleFunc("/users/{id:[0-9]+}", getUserHandler).Methods("GET")
HTTP 方法匹配
可限制路由的请求方法(GET/POST等)。r.HandleFunc("/books", createBookHandler).Methods("POST")
子路由与前缀
支持嵌套路由分组:api := r.PathPrefix("/api").Subrouter() api.HandleFunc("/products", listProductsHandler)
中间件支持
兼容标准http.Handler
,可集成日志、认证等中间件:r.Use(loggingMiddleware)
查询参数 & Host 匹配
支持按域名或查询条件过滤路由。
安装方式
go get -u github.com/gorilla/mux
完整示例
package main
import (
"fmt"
"net/http"
"github.com/gorilla/mux"
)
func main() {
r := mux.NewRouter()
// 定义路由
r.HandleFunc("/", homeHandler)
r.HandleFunc("/users/{name}", userHandler).Methods("GET")
// 启动服务
http.ListenAndServe(":8080", r)
}
func homeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Home Page")
}
func userHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
fmt.Fprintf(w, "User: %s", vars["name"])
}
优势 vs 标准库
- 更灵活的路由规则(如路径变量、正则约束)。
- 清晰的代码组织(子路由、中间件链)。
- 性能足够高效,适合大多数 Web 应用。
如果需要进一步探讨高级用法(如自定义中间件、测试等),可以告诉我具体场景!
内容由零声教学AI助手提供,问题来源于学员提问