github.com/lingyao2333/mo-zero@v1.4.1/rest/handler/metrichandler.go (about) 1 package handler 2 3 import ( 4 "net/http" 5 6 "github.com/lingyao2333/mo-zero/core/stat" 7 "github.com/lingyao2333/mo-zero/core/timex" 8 ) 9 10 // MetricHandler returns a middleware that stat the metrics. 11 func MetricHandler(metrics *stat.Metrics) func(http.Handler) http.Handler { 12 return func(next http.Handler) http.Handler { 13 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 14 startTime := timex.Now() 15 defer func() { 16 metrics.Add(stat.Task{ 17 Duration: timex.Since(startTime), 18 }) 19 }() 20 21 next.ServeHTTP(w, r) 22 }) 23 } 24 }