Go 设置大猩猩多路复用子计算机

Go 设置大猩猩多路复用子计算机,go,gorilla,Go,Gorilla,如果我有一个多路复用路由器,我如何将它设置为“子计算机”?我能找到的所有示例都是通过调用Route.Subrouter()并在其上设置处理程序来创建一个新路由器,但我已经有了一个路由器 // does not know about "/api/v1/" v1_router := mux.NewRouter() subrouter.HandleFuc("/route1/", ...) subrouter.HandleFuc("/route2/", ...) // does not now abo

如果我有一个多路复用路由器,我如何将它设置为“子计算机”?我能找到的所有示例都是通过调用Route.Subrouter()并在其上设置处理程序来创建一个新路由器,但我已经有了一个路由器

// 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)

我希望我说的有道理……

我也有同样的感觉,必须以同样的“变通办法”生活。我想将子程序设置为现有路由器。比如:

r.PathPrefix("/api").SetSubrouter(api.GetRouter()) //won't work
这会让我的api感觉更加自治/松散耦合。但我们从大猩猩那里得到的只是一个代位机

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

我也有同样的感觉,我不得不接受同样的“变通方法”。我想将子程序设置为现有路由器。比如:

r.PathPrefix("/api").SetSubrouter(api.GetRouter()) //won't work
这会让我的api感觉更加自治/松散耦合。但我们从大猩猩那里得到的只是一个代位机

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

您可以这样做:

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())
主文件:

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())

您可以这样做:

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())
主文件:

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())

你能不能直接调用
subrouter.PathPrefix
?以及
subrouter
是如何创建的?@kopiczko那么子计算机必须知道我不想知道的路径前缀,而我通过子计算机创建路由器并将其传递给“RegisterRoutes”method难道你不能直接调用
subrouter.PathPrefix
?以及
subrouter
是如何创建的?@kopiczko然后子计算机必须知道我不想知道的路径前缀。同时,我通过子计算机创建一个路由器,并将其传递给“RegisterRoutes”方法