Merge pull request #3683 from aaronlehmann/dont-recreate-router

Do not recreate mux router for each incoming request
This commit is contained in:
Milos Gajdos 2022-07-29 17:30:34 +01:00 committed by GitHub
commit 26163d8256
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,6 +1,10 @@
package v2 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 // 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. // registered. These symbols can be used to look up a route based on the name.
@ -14,11 +18,19 @@ const (
RouteNameCatalog = "catalog" RouteNameCatalog = "catalog"
) )
var (
baseRouter *mux.Router
createBaseRouterOnce sync.Once
)
// Router builds a gorilla router with named routes for the various API // Router builds a gorilla router with named routes for the various API
// methods. This can be used directly by both server implementations and // methods. This can be used directly by both server implementations and
// clients. // clients.
func Router() *mux.Router { func Router() *mux.Router {
return RouterWithPrefix("") createBaseRouterOnce.Do(func() {
baseRouter = RouterWithPrefix("")
})
return baseRouter
} }
// RouterWithPrefix builds a gorilla router with a configured prefix // RouterWithPrefix builds a gorilla router with a configured prefix