Merge pull request #3683 from aaronlehmann/dont-recreate-router
Do not recreate mux router for each incoming request
This commit is contained in:
commit
26163d8256
1 changed files with 14 additions and 2 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue