Как настроить Gorilla Mux r. Использование для возврата ошибок по цепочке промежуточного программного обеспечения?https://godoc.org/github.com/gorilla/mux#Router.Use
Main.go
r := mux.NewRouter()
r.Use(LoggingFunc)
r.Use(AuthFunc)
Базовое промежуточное ПО
Начинается с промежуточного ПО для ведения журналов, которое может отлавливать и обрабатывать ошибки из дальнейших цепочек
type HandlerFunc func(w http.ResponseWriter, r *http.Request) error
func LoggingFunc(next HandlerFunc) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Logging middleware
defer func() {
if err, ok := recover().(error); ok {
w.WriteHeader(http.StatusInternalServerError)
}
}()
err := next(w, r)
if err != nil {
// log error
}
})
}
Следующее промежуточное программное обеспечение обрабатывает аутентификацию и возвращает ошибку промежуточному программному обеспечению для ведения журналов.
func AuthFunc(next HandlerFunc) HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) error {
if r.GET("JWT") == "" {
return fmt.Errorf("No JWT")
}
return next(w, r)
}
}
Я получаю сообщения об ошибках типа
cannot use AuthFunc (type func(handlers.HandlerFunc) http.Handler) as type mux.MiddlewareFunc in argument to r.Use
Спасибо