передача данных между middlewares

всем привет.

у меня есть несколько мидлваре в проекте, они запускаются одна за другой при запросе определенного урла перед тем как запустить финальный хэндлфанк

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

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


Ответы (1 шт):

Автор решения: Maksim Fedorov

Если у вас http/net, то примерно так:

Первый посредник (выполняется первым)

return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    ctx := r.Context()
    ctx = context.WithValue(ctx,"YOU_KEY", "YOU_VALUE")
    next.ServeHTTP(w, r.WithContext(ctx))
}

Второй посредник (выполняется вторым)

return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    v := r.Context().Value("YOU_KEY")
    // some logic
}
→ Ссылка