diff --git a/registry/api/v2/routes.go b/registry/api/v2/routes.go index 9612ac2e5..74bf15e15 100644 --- a/registry/api/v2/routes.go +++ b/registry/api/v2/routes.go @@ -1,6 +1,10 @@ package v2 -import "github.com/gorilla/mux" +import ( + "sync" + + "github.com/gorilla/mux" +) // The following are definitions of the name under which all V2 routes are // registered. These symbols can be used to look up a route based on the name. @@ -14,11 +18,19 @@ const ( RouteNameCatalog = "catalog" ) +var ( + baseRouter *mux.Router + createBaseRouterOnce sync.Once +) + // Router builds a gorilla router with named routes for the various API // methods. This can be used directly by both server implementations and // clients. func Router() *mux.Router { - return RouterWithPrefix("") + createBaseRouterOnce.Do(func() { + baseRouter = RouterWithPrefix("") + }) + return baseRouter } // RouterWithPrefix builds a gorilla router with a configured prefix