I've used chi as a lightweight router for building HTTP services.
Middleware is configured between defining a new chi.NewRouter()
and calling ListenAndServe()
Full list of chi built-in middlewares
The iOS api uses:
Also looking into HttpRate for rate limiting.
Middleware is a function that receives an http.Handler
and returns an http.Handler
.
A Handler responds to an HTTP request.
func (s *Server) metricsMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Do some stuff here...
next.ServeHTTP(w, r)
})
}
Inside your custom handler you can do things like read the body.