Условное поведение промежуточного ПО через обработчик - PullRequest
1 голос
/ 08 июля 2019

Я пытаюсь реализовать условное поведение промежуточного программного обеспечения после вызова обработчика.

Я изучил контексты и смог изменить / использовать их в качестве флагов, передавая данные в обработчик из промежуточного программного обеспечения, но не из обработчика в промежуточное программное обеспечение. Сигнатуры метода не допускают возвращаемых значений.

Это краткое описание того, с чем я работаю:

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)
}
...