如何从多路复用器中获取可用路线?

时间:2017-07-06 16:44:54

标签: go gorilla

我有一个多路复用器和四种不同的路线。

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()将返回包含所有路径的切片,methods := routes[1].Methods()将返回该路线上列出的方法。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

使用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...)
}

初始化步骤。