如果我有 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, route2r := mux.NewRouter()r.PathPrefix("/api/v1/").???(v1_router)我希望我说得有道理...
2 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
我有同样的感觉,并且必须忍受相同的“解决方法”。我想将子路由器设置为现有路由器。喜欢:
r.PathPrefix("/api").SetSubrouter(api.GetRouter()) //won't work
这会让我的 api 感觉更加自主/松散耦合。但是从大猩猩那里得到一个子路由器就是我们所拥有的。
s := r.PathPrefix("/api").Subrouter()
api.SetRoutes(s)
HUH函数
TA贡献1836条经验 获得超4个赞
你可以这样做:
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())
- 2 回答
- 0 关注
- 137 浏览
添加回答
举报
0/150
提交
取消