Как уже упоминалось, Motakjuq
, вы не можете напрямую написать промежуточное программное обеспечение, которое принимает параметры в качестве аргумента, поскольку они должны быть подписи func (http.Handler) http.Handler
.
Что вы можете сделать, это создать функцию, которая генерирует вашу функцию промежуточного программного обеспечения.
func middlewareGenerator(foo, foo2 string) (mw func(http.Handler) http.Handler) {
mw = func(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Use foo1 & foo2
h.ServeHTTP(w, r)
})
}
return
}
Затем вы можете сделать следующее
middlewareChain := alice.New(middlewareGenerator("foo","foo2"))
вы не можете, в документе говорит, что функция middleware func должна иметь форму 'func (http.Handler) http.Handler', вы должны найти другой метод, такой как данные сеанса или другой механизм хранения. – Motakjuq
Также хочу добавить, что использование контекста - это еще один вариант для этого, для чего он нужен. – saarrrr