猿问

设置 gorilla mux 子路由器

如果我有 mux.Router,如何将其设置为“子路由器”?我能找到的所有示例都通过调用 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)

我希望我说得有道理...


慕婉清6462132
浏览 138回答 2
2回答

拉丁的传说

我有同样的感觉,并且必须忍受相同的“解决方法”。我想将子路由器设置为现有路由器。喜欢:r.PathPrefix("/api").SetSubrouter(api.GetRouter()) //won't work这会让我的 api 感觉更加自主/松散耦合。但是从大猩猩那里得到一个子路由器就是我们所拥有的。s := r.PathPrefix("/api").Subrouter()api.SetRoutes(s)

HUH函数

你可以这样做: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())
随时随地看视频慕课网APP

相关分类

Go
我要回答