Middleware

Código que envuelve cada petición

Algo de trabajo le pertenece a todos los endpoints: registrar cada petición, verificar un token de login, medir cuánto tardó un handler. No quieres copiar eso en los veinte handlers. El middleware es la respuesta — una función que envuelve un handler, hace su trabajo y pasa el control.

En Go, un handler es cualquier cosa que satisface la interface http.Handler (tiene un método ServeHTTP(w, r)). Un middleware es una función que recibe un handler y retorna un handler nuevo:

func(next http.Handler) http.Handler

El handler next es el trabajo real; el handler retornado es tu envoltorio alrededor de él.