go - 如何从 mux in go 获取可用路由?

标签 go gorilla

我有一个多路复用器和 4 条不同的路由。

a.Router = mux.NewRouter()

a.Router.HandleFunc("/1/query/{query}", a.sigQuery).Methods("GET")

a.Router.HandleFunc("/1/sis", a.rGet).Methods("GET")

a.Router.HandleFunc("/1/sigs", a.sigHandler).Methods("GET", "POST", "DELETE")

a.Router.HandleFunc("/1/nfeeds", a.nfeedGet).Methods("GET", "DELETE", "POST")

有没有一种方法可以列出定义的路由并获取定义在它们上的方法。我正在尝试这种方式:routes := a.getRoutes() 会返回一个包含所有路由的 slice ,methods := routes[1].Methods()将返回该路线上列出的方法。我们有办法实现这一目标吗?

最佳答案

使用 Walk方法:

router.Walk(func(route *mux.Route, router *mux.Router, ancestors []*mux.Route) error {
    tpl, err1 := route.GetPathTemplate()
    met, err2 := route.GetMethods()
    fmt.Println(tpl, err1, met, err2)
    return nil
})

或者,您可以将所有路由放入一片结构中,然后执行

for _, r := range routes {
    router.HandleFunc(r.tpl, r.func).Methods(r.methods...)
}

关于初始化步骤。

关于go - 如何从 mux in go 获取可用路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954705/

相关文章:

multithreading - 具有分层输出的堆栈跟踪

http - Golang 在服务器运行时获得 404

go - go/mux 中第一次匹配后停止匹配

go - 如何使用 gorilla 处理程序允许移动设备上的 OPTIONS 方法?

reactjs - 在 Gorilla Mux : 403 error on POST request 中配置 CORS

go - cgo - 在 MacOSX 中找不到 'runtime.h' 文件

templates - Golang 无法从我的垃圾箱中获取 "template.ParseFiles()"(Revel)

go - 如何使用 Go 访问 JWT 子声明?

mysql - Golang 将映射键设置为其值的变量

Golang gorilla 希望在静态服务中使用尾部斜线