Как добавить промежуточное ПО в подчиненный маршрутизатор в Go? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть следующий код:

    apiRouter := mux.NewRoute().PathPrefix("/").Subrouter()

    // Bucket router
    bucket := apiRouter.PathPrefix("/{bucket}").Subrouter()

    bucket.Methods("HEAD").Path("/{object:.+}").HandlerFunc(
        api.HeadObjectHandler)

    // Similarly handle many more methods

Я пытаюсь добавить сбор статистики поверх всех операций, которые обрабатываются подпунктом 'bucket'.Эта структура сбора статистики будет нуждаться в имени 'bucket', которое передается всем обработчикам, используемым bucket.

Есть ли способ добавить оболочку для подчиненного маршрутизатора в Go?Я нашел несколько похожих вопросов:

(i) Использование промежуточного программного обеспечения с мультипотоколами Golang Gorilla Но ответ на поставленный выше вопрос можно использовать только со статическим префиксом, тогда как я хочу знатьимя сегмента, совпадающее с "/ {bucket}"

(ii) Эта является еще одной ссылкой, которая решает тот же вопрос с использованием нового объекта мультиплексирования.Это может сработать, но в коде это выглядит довольно округло.Я новичок в golang, и я изменяю небольшую часть большей кодовой базы, поэтому я не уверен насчет влияния оставшегося кода при использовании первого объекта mux.

Есть ли способделать то, что мне нужно, без использования решения в (ii)?

1 Ответ

0 голосов
/ 24 апреля 2019

Вам нужно только добавить что-то вроде этого:

bucket.use(middleware)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...