package httpserver import ( "github.com/gorilla/mux" ) func (s *server) routes() { s.router = mux.NewRouter() authMiddleware := s.AuthMiddleware() s.router.HandleFunc("/", s.handleIndex()).Methods("GET") // if you want to use a general purpose middleware (http.Handler // wrapper) on a specific HandleFunc route, you need to take the // .ServeHTTP of the http.Handler to get its HandleFunc, viz: s.router.HandleFunc("/login", authMiddleware(s.handleLogin()).ServeHTTP).Methods("GET") s.router.HandleFunc("/.well-known/healthcheck.json", s.handleHealthCheck()).Methods("GET") // the Gorilla mux .Use() takes a http.Handler wrapper func, like // most things that deal with "middlewares" like alice et c, and // will call ServeHTTP on it. These middlewares applied by the mux // (you can .Use() more than one) will be applied to every request // into the service. s.router.Use(s.LoggingMiddleware()) }