gorilla/mux 实现了一个请求路由和分发的 Go 框架。
gorilla/mux
mux 名字的意思是 “HTTP request multiplexer”. 和标准包 http.ServeMux类似, mux.Router根据已注册路由列表匹配传入请求,并调用与URL或其他条件匹配的路由的处理程序。
http.ServeMux
mux.Router
主要特性:
http.Handler
go get -u github.com/gorilla/mux
func main() { r := mux.NewRouter() r.HandleFunc("/", HomeHandler) r.HandleFunc("/products", ProductsHandler) r.HandleFunc("/articles", ArticlesHandler) http.Handle("/", r) }
这里我们注册了三个 URL 匹配路由进行处理。路径也可以是变量:
r := mux.NewRouter() r.HandleFunc("/products/{key}", ProductHandler) r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler) r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)
这些名称用于创建路由变量的映射,可以通过调用mux.Vars 获取:
func ArticlesCategoryHandler(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "Category: %v\n", vars["category"]) }