chi icon indicating copy to clipboard operation
chi copied to clipboard

Heartbeat middleware is not invoked when added to a subrouter

Open mo-rieger opened this issue 1 year ago • 2 comments

Hi there,

The Heartbeat middleware is not invoked when attached to a sub router, whereas other middlewares are.

The expected behaviour would be that /connectivity/ping would return 200. Instead, a 404 is returned.

package main

import (
	"net/http"

	"github.com/go-chi/chi/v5"
	"github.com/go-chi/chi/v5/middleware"
)

func main() {
	r := chi.NewRouter()

	r.Use(middleware.RequestID)
	r.Use(middleware.RealIP)
	r.Use(middleware.Recoverer)
	
	r.Mount("/connectivity", NewSubrouter())
	
	http.ListenAndServe(":3333", r)
}

func NewSubrouter() chi.Router {
	r := chi.NewRouter()
	r.Use(middleware.Logger)
	r.Use(middleware.Heartbeat("/ping"))
	
	r.Get("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("."))
	})
	
	return r
}

Best, Moritz

mo-rieger avatar May 03 '23 15:05 mo-rieger

I created PR for this issue, please check

kubosuke avatar May 07 '23 07:05 kubosuke