как обернуть обработчик gorilla mux func с помощью промежуточного программного обеспечения yaag

Я следую этому учебнику. http://thenewstack.io/make-a-restful-json-api-go/

router := mux.NewRouter().StrictSlash(true)
for _, route := range routes {
    router.
        Methods(route.Method).
        Path(route.Pattern).
        Name(route.Name).
        Handler(route.HandlerFunc)
}

Мне нужно обернуть функцию конечной точки с помощью промежуточного программного обеспечения yaag.

r.HandleFunc("/", middleware.HandleFunc(handler))

Как этого добиться?

РЕДАКТИРОВАТЬ: я оборачиваю Logger и возвращаю хаддлер. Logger принимает первый аргумент, как http.Handle. Так что обертывание route.HandlerFunc не сработает. Не могли бы вы помочь мне здесь?

handler := Logger(route.HandlerFunc, route.Name)

    router.
        Methods(route.Method).
        Path(route.Pattern).
        Name(route.Name).
        Handler(handler)

person Varun Gupta    schedule 27.10.2016    source источник


Ответы (1)


Все, что вам нужно сделать, это заменить .Handler() на .HandlerFunc() и обернуть вашу функцию обработчика промежуточным программным обеспечением, чтобы каждая конечная точка сначала передавалась промежуточному программному обеспечению yaag, а затем вашей функции обработчика, например это:

router := mux.NewRouter().StrictSlash(true)
for _, route := range routes {
    router.
        Methods(route.Method).
        Path(route.Pattern).
        Name(route.Name).
        HandlerFunc(middleware.HandleFunc(route.HandlerFunc)) // change here
}
person Yandry Pozo    schedule 28.10.2016