feat: add middlewares config for rest (#2765)
* feat: add middlewares config for rest * chore: disable logs in tests * chore: enable verbose in tests
This commit is contained in:
@@ -88,19 +88,7 @@ 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 = 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)
|
||||
@@ -125,6 +113,47 @@ func (ng *engine) bindRoutes(router httpx.Router) error {
|
||||
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 {
|
||||
if bytes > 0 {
|
||||
return bytes
|
||||
|
||||
Reference in New Issue
Block a user