Quantcast
Channel: Active questions tagged rest - Stack Overflow
Viewing all articles
Browse latest Browse all 4049

How does middleware work in chi routing in Go and what does http.Handler argument refers to in middleware?

$
0
0
--  routes.go --package mainimport ("hotelsystem/pkg/config""hotelsystem/pkg/handlers""net/http""github.com/go-chi/chi/v5""github.com/go-chi/chi/v5/middleware")func routes(app *config.AppConfig) http.Handler {    mux := chi.NewRouter()    mux.Use(middleware.Recoverer)    mux.Use(WriteToConsole)    mux.Get("/", handlers.Repo.Home)    mux.Get("/about", handlers.Repo.About)    return mux}-- middleware.go --package mainimport ("fmt""net/http")func WriteToConsole(next http.Handler) http.Handler {    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {        fmt.Println("Hit the page")        next.ServeHTTP(w, r)    })}-- main.go --package mainimport ("hotelsystem/pkg/config""hotelsystem/pkg/handlers""hotelsystem/pkg/render""log""net/http")const portNumber = ":3000"func main() {    var app config.AppConfig    tc, err := render.CreateTemplateCache()    if err != nil {        log.Fatal("Can't create templatecache", err)    }    app.TemplateCache = tc    app.UseCache = false    repo := handlers.NewRepo(&app)    handlers.NewHandlers(repo)    render.NewTemplate(&app)    // http.HandleFunc("/", handlers.Repo.Home)    // http.HandleFunc("/about", handlers.Repo.About)    // http.ListenAndServe(portNumber, nil)    srv := &http.Server{        Addr:    portNumber,        Handler: routes(&app),    }    err = srv.ListenAndServe()    if err != nil {        log.Fatal(err)    }}

I am having a hard time understanding the middleware.

I am using chi for routing.

What I didn't understand is what does that (next http.Handler) argument in the WriteToConsole refers to?

Does it refer to our mux router?

Also when I comment down the line next.ServeHTTP of function writetoconsole the html is not rendered or anything? can someone explain me what does that next http.Handler refers to and what next.serveHTTP does?


Viewing all articles
Browse latest Browse all 4049

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>