промежуточное ПО, которое будет работать раньше всех других обработчиков - PullRequest
0 голосов
/ 24 октября 2018

У меня это в основном:

    router := mux.NewRouter()

    router.PathPrefix("/").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        glog.Info("before")
    })

    router.HandleFunc("/people", person.GetMany).Methods("GET")
    router.HandleFunc("/people/{id}", person.GetOne).Methods("GET")
    router.HandleFunc("/people/{id}", person.Create).Methods("POST")
    router.HandleFunc("/people/{id}", person.Delete).Methods("DELETE")

это означает, что ничего не попало, кроме первого обработчика промежуточного программного обеспечения, поэтому я попытался создать новый маршрутизатор для обработки журналов:

    mux.NewRouter().PathPrefix("/").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        glog.Info("before")
    })

но этот новый маршрутизатор не попал И ни один из моих других маршрутов не попал.Что мне делать вместо этого?

1 Ответ

0 голосов
/ 24 октября 2018

Промежуточное ПО регистрируется по телефону Router.Use

Пример кода здесь

Ваш код должен быть:

router.Use(func(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        glog.Info("before")
        next.ServeHTTP(w, r)
    })
})
...