Я пытаюсь добавить промежуточное ПО только на некоторые маршруты. Я написал этот код:
func main() {
router := mux.NewRouter().StrictSlash(false)
admin_subrouter := router.PathPrefix("/admin").Subrouter()
//handlers.CombinedLoggingHandler comes from gorilla/handlers
router.PathPrefix("/admin").Handler(negroni.New(
negroni.Wrap(handlers.CombinedLoggingHandler(os.Stdout, admin_subrouter)),
))
admin_subrouter.HandleFunc("/articles/new", articles_new).Methods("GET")
admin_subrouter.HandleFunc("/articles", articles_index).Methods("GET")
admin_subrouter.HandleFunc("/articles", articles_create).Methods("POST")
n := negroni.New()
n.UseHandler(router)
http.ListenAndServe(":3000", n)
}
Я ожидаю увидеть журналы запросов только для путей с префиксом /admin. Я вижу строку журнала, когда делаю «GET/admin», но не вижу, когда делаю «GET/admin/articles/new». Пробовал перебором другие комбинации, но не получается. Что не так с моим кодом?
Я видел и другие способы, такие как перенос HandlerFunc на каждое определение маршрута, но я хотел сделать это один раз для префикса или подмаршрутизатора.
Промежуточное программное обеспечение для ведения журналов, которое я использую, предназначено для тестирования, возможно, промежуточное программное обеспечение для аутентификации имеет больше смысла, но я просто хотел заставить его работать.
Спасибо!