diff --git a/rest/config.go b/rest/config.go index eb5fdb0ba234..f9ff8532289b 100644 --- a/rest/config.go +++ b/rest/config.go @@ -52,9 +52,10 @@ type ( MaxConns int `json:",default=10000"` MaxBytes int64 `json:",default=1048576"` // milliseconds - Timeout int64 `json:",default=3000"` - CpuThreshold int64 `json:",default=900,range=[0:1000)"` - Signature SignatureConf `json:",optional"` + Timeout int64 `json:",default=3000"` + CpuThreshold int64 `json:",default=900,range=[0:1000)"` + Signature SignatureConf `json:",optional"` + AddNativeMiddlewares bool `json:",default=true"` // There are default values for all the items in Middlewares. Middlewares MiddlewaresConf // TraceIgnorePaths is paths blacklist for trace middleware. diff --git a/rest/engine.go b/rest/engine.go index e57786caf205..72d959622418 100644 --- a/rest/engine.go +++ b/rest/engine.go @@ -98,7 +98,10 @@ func (ng *engine) bindRoute(fr featuredRoutes, router httpx.Router, metrics *sta route Route, verifier func(chain.Chain) chain.Chain) error { chn := ng.chain if chn == nil { - chn = ng.buildChainWithNativeMiddlewares(fr, route, metrics) + chn = chain.New() + } + if ng.conf.AddNativeMiddlewares { + chn = ng.buildChainWithNativeMiddlewares(chn, fr, route, metrics) } chn = ng.appendAuthHandler(fr, chn, verifier) @@ -123,9 +126,8 @@ func (ng *engine) bindRoutes(router httpx.Router) error { return nil } -func (ng *engine) buildChainWithNativeMiddlewares(fr featuredRoutes, route Route, +func (ng *engine) buildChainWithNativeMiddlewares(chn chain.Chain, fr featuredRoutes, route Route, metrics *stat.Metrics) chain.Chain { - chn := chain.New() if ng.conf.Middlewares.Trace { chn = chn.Append(handler.TraceHandler(ng.conf.Name, @@ -162,8 +164,8 @@ func (ng *engine) buildChainWithNativeMiddlewares(fr featuredRoutes, route Route if ng.conf.Middlewares.Gunzip { chn = chn.Append(handler.GunzipHandler) } - return chn + } func (ng *engine) checkedMaxBytes(bytes int64) int64 { diff --git a/rest/server_test.go b/rest/server_test.go index 9a92d58f8203..e9d656067132 100644 --- a/rest/server_test.go +++ b/rest/server_test.go @@ -627,7 +627,7 @@ func TestServer_WithChain(t *testing.T) { } } - server := MustNewServer(RestConf{}, WithChain(chain.New(middleware1(), middleware2()))) + server := MustNewServer(RestConf{AddNativeMiddlewares: true, Middlewares: MiddlewaresConf{Log: true}}, WithChain(chain.New(middleware1(), middleware2()))) server.AddRoutes( []Route{ {