Я пытаюсь реализовать условное поведение промежуточного программного обеспечения после вызова обработчика.
Я изучил контексты и смог изменить / использовать их в качестве флагов, передавая данные в обработчик из промежуточного программного обеспечения, но не из обработчика в промежуточное программное обеспечение. Сигнатуры метода не допускают возвращаемых значений.
Это краткое описание того, с чем я работаю:
func Reporter(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
next.ServeHTTP(w, r)
// conditionally check if err != nil here and log
})
}
func appRoutes(r chi.Router) {
r.Use(Reporter)
r.Get("/", ListApplications)
}
func ListApplications(w http.ResponseWriter, , r *http.Request) {
apps, err := fetchApps()
if err != nil {
render.Render(w, r, ErrorStructRenderer(err))
return
}
render.Respond(w, r, apps)
}