如何从 mux in go 获取可用路由?
How to get available routes from the mux in go?
我有一个多路复用器和 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()
将 return 包含所有路由的切片,而 methods := routes[1].Methods()
将 return 该路由上列出的方法。有什么办法可以实现吗?
使用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...)
}
关于初始化步骤。
我有一个多路复用器和 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()
将 return 包含所有路由的切片,而 methods := routes[1].Methods()
将 return 该路由上列出的方法。有什么办法可以实现吗?
使用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...)
}
关于初始化步骤。