Overview
chi で独自 middleware を使う上で使い方を忘れていたのでその備忘録。
備忘録
router.Use(func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // middleware でやりたい処理 next.ServeHTTP(w, r) // これがないと次の router に処理が伝播しない }) })
middleware 内部で ServeHTTP
しないと実際の処理をしてる handler まで処理が伝播しないことを忘れていて時間を溶かしてしまった。
ちなみに以下のような感じで前処理と後処理に分けることができる。
router.Use(func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // handler の前処理 next.ServeHTTP(w, r) // handler の後処理 }) })