设置大猩猩mux subrouter

时间:2016-01-03 20:37:32

标签: go gorilla

如果我有一个mux.Router,我该如何将它设置为“子路由器”?我可以找到的所有示例都是通过调用Route.Subrouter()然后在其上设置Handlers来创建一个新的路由器,但我已经有了路由器!

// does not know about "/api/v1/"
v1_router := mux.NewRouter()
subrouter.HandleFuc("/route1/", ...)
subrouter.HandleFuc("/route2/", ...)

// does not now about route1, route2
r := mux.NewRouter()
r.PathPrefix("/api/v1/").???(v1_router)

我希望我有意义......

2 个答案:

答案 0 :(得分:0)

我有同样的感觉,并且必须忍受相同的“解决方法”。我想将子路由器设置为现有路由器。喜欢:

r.PathPrefix("/api").SetSubrouter(api.GetRouter()) //won't work

这会让我的api感觉更加自主/松散耦合。但获取子路由器就是我们从大猩猩那里获得的。

s := r.PathPrefix("/api").Subrouter()
api.SetRoutes(s)

答案 1 :(得分:0)

您可以这样做:

v1软件包文件:

func Handlers(subrouter *mux.Router) {
    //base handler, i.e. /v1
    r.StrictSlash(true)
    subrouter.HandleFuc("/route1/", ...)
    subrouter.HandleFuc("/route2/", ...)
}

主文件:

r := mux.NewRouter()
package.Handlers(r.PathPrefix("/api/v1").Subrouter())