|
@@ -88,19 +88,7 @@ func (ng *engine) bindRoute(fr featuredRoutes, router httpx.Router, metrics *sta
|
|
route Route, verifier func(chain.Chain) chain.Chain) error {
|
|
route Route, verifier func(chain.Chain) chain.Chain) error {
|
|
chn := ng.chain
|
|
chn := ng.chain
|
|
if chn == nil {
|
|
if chn == nil {
|
|
- chn = chain.New(
|
|
|
|
- handler.TracingHandler(ng.conf.Name, route.Path),
|
|
|
|
- ng.getLogHandler(),
|
|
|
|
- handler.PrometheusHandler(route.Path),
|
|
|
|
- handler.MaxConns(ng.conf.MaxConns),
|
|
|
|
- handler.BreakerHandler(route.Method, route.Path, metrics),
|
|
|
|
- handler.SheddingHandler(ng.getShedder(fr.priority), metrics),
|
|
|
|
- handler.TimeoutHandler(ng.checkedTimeout(fr.timeout)),
|
|
|
|
- handler.RecoverHandler,
|
|
|
|
- handler.MetricHandler(metrics),
|
|
|
|
- handler.MaxBytesHandler(ng.checkedMaxBytes(fr.maxBytes)),
|
|
|
|
- handler.GunzipHandler,
|
|
|
|
- )
|
|
|
|
|
|
+ chn = ng.buildChainWithNativeMiddlewares(fr, route, metrics)
|
|
}
|
|
}
|
|
|
|
|
|
chn = ng.appendAuthHandler(fr, chn, verifier)
|
|
chn = ng.appendAuthHandler(fr, chn, verifier)
|
|
@@ -125,6 +113,47 @@ func (ng *engine) bindRoutes(router httpx.Router) error {
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func (ng *engine) buildChainWithNativeMiddlewares(fr featuredRoutes, route Route,
|
|
|
|
+ metrics *stat.Metrics) chain.Chain {
|
|
|
|
+ chn := chain.New()
|
|
|
|
+
|
|
|
|
+ if ng.conf.Middlewares.Trace {
|
|
|
|
+ chn = chn.Append(handler.TracingHandler(ng.conf.Name, route.Path))
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.Log {
|
|
|
|
+ chn = chn.Append(ng.getLogHandler())
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.Prometheus {
|
|
|
|
+ chn = chn.Append(handler.PrometheusHandler(route.Path))
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.MaxConns {
|
|
|
|
+ chn = chn.Append(handler.MaxConnsHandler(ng.conf.MaxConns))
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.Breaker {
|
|
|
|
+ chn = chn.Append(handler.BreakerHandler(route.Method, route.Path, metrics))
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.Shedding {
|
|
|
|
+ chn = chn.Append(handler.SheddingHandler(ng.getShedder(fr.priority), metrics))
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.Timeout {
|
|
|
|
+ chn = chn.Append(handler.TimeoutHandler(ng.checkedTimeout(fr.timeout)))
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.Recover {
|
|
|
|
+ chn = chn.Append(handler.RecoverHandler)
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.Metrics {
|
|
|
|
+ chn = chn.Append(handler.MetricHandler(metrics))
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.MaxBytes {
|
|
|
|
+ chn = chn.Append(handler.MaxBytesHandler(ng.checkedMaxBytes(fr.maxBytes)))
|
|
|
|
+ }
|
|
|
|
+ if ng.conf.Middlewares.Gunzip {
|
|
|
|
+ chn = chn.Append(handler.GunzipHandler)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return chn
|
|
|
|
+}
|
|
|
|
+
|
|
func (ng *engine) checkedMaxBytes(bytes int64) int64 {
|
|
func (ng *engine) checkedMaxBytes(bytes int64) int64 {
|
|
if bytes > 0 {
|
|
if bytes > 0 {
|
|
return bytes
|
|
return bytes
|