为了账号安全,请及时绑定邮箱和手机立即绑定

设置 gorilla mux 子路由器

设置 gorilla mux 子路由器

Go
慕婉清6462132 2021-12-06 17:12:16
如果我有 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)


查看完整回答
反对 回复 2021-12-06
?
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())


查看完整回答
反对 回复 2021-12-06
  • 2 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信