ZBLOG

github.com/gorilla/mux

github.com/gorilla/mux 是 Go 语言中一个流行的 HTTP 路由库(属于 Gorilla Web Toolkit 的一部分),用于构建灵活的 Web 服务路由。以下是关键信息和使用示例:


核心功能

  1. 动态路由
    支持路径变量(如 /users/{id})和正则表达式匹配。

    r := mux.NewRouter()
    r.HandleFunc("/users/{id:[0-9]+}", getUserHandler).Methods("GET")
    
  2. HTTP 方法匹配
    可限制路由的请求方法(GET/POST等)。

    r.HandleFunc("/books", createBookHandler).Methods("POST")
    
  3. 子路由与前缀
    支持嵌套路由分组:

    api := r.PathPrefix("/api").Subrouter()
    api.HandleFunc("/products", listProductsHandler)
    
  4. 中间件支持
    兼容标准 http.Handler,可集成日志、认证等中间件:

    r.Use(loggingMiddleware)
    
  5. 查询参数 & 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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23974

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?