Size: a a a

2020 June 13

VU

Vlad Ulianov in Go-go!
ziggy lucid
как правильно объединить несколько gorilla mux.Router в один?
Два разных порта или один порт и разные роуты?
источник

zl

ziggy lucid in Go-go!
Vlad Ulianov
Два разных порта или один порт и разные роуты?
несколько разных роутеров mux.Router
источник

VU

Vlad Ulianov in Go-go!
ziggy lucid
несколько разных роутеров mux.Router
Это не отменяет вопрос, чего ты хочешь получить и что думаешь по порты
источник

zl

ziggy lucid in Go-go!
Andrey Kartashov
то есть как? вы контролируете код, которому передаётся указатель, но не контролируете код, где объект создаётся? Странная ситуация
ну почему же
например, сервер запускается в горутине и наблюдателю доступен только указатель на него
источник

zl

ziggy lucid in Go-go!
Vlad Ulianov
Это не отменяет вопрос, чего ты хочешь получить и что думаешь по порты
хочу объединить несколько готовых горилла-роутеров в один
порты тут совершенно не при чем
источник

VU

Vlad Ulianov in Go-go!
ziggy lucid
хочу объединить несколько готовых горилла-роутеров в один
порты тут совершенно не при чем
По одному урлу или на разных портах?
источник

zl

ziggy lucid in Go-go!
Vlad Ulianov
По одному урлу или на разных портах?
на одном порту
оттуда только http.Handler нужен, уж больно удобен в горилле сам роутер
источник

VU

Vlad Ulianov in Go-go!
Просто ты вряд ли сделаешь несколько баз событий (мукс серверов) в одном приложении. Но можешь сделать требуемое количество саброутеров и работать с ними. Для каждого свои мидлвари и саброуты
источник

VU

Vlad Ulianov in Go-go!
Я так решал вопросы с мидлварями, когда не хотел проводить аутентификацию на некоторых роутах
источник

zl

ziggy lucid in Go-go!
ситуация такая
есть готовые роутеры с реализованными обработчиками
роутеры не пересекаются, просто хотелось их объединить в один, не переписывая ничего
типа routerC := routerA+routerB
источник

VU

Vlad Ulianov in Go-go!
ziggy lucid
ситуация такая
есть готовые роутеры с реализованными обработчиками
роутеры не пересекаются, просто хотелось их объединить в один, не переписывая ничего
типа routerC := routerA+routerB
Мне не известны решения. Только если запустить их все на разных портах и создать транзитный медиатор, который будет редиректить запрос на нужный локалхост порт
источник

AK

Andrey Kartashov in Go-go!
ziggy lucid
ситуация такая
есть готовые роутеры с реализованными обработчиками
роутеры не пересекаются, просто хотелось их объединить в один, не переписывая ничего
типа routerC := routerA+routerB
а роуты А и Б известны?
источник

AK

Andrey Kartashov in Go-go!
хотя, их можно достать через Walk - тогда главное, чтоб они е пересекались
источник

AK

Andrey Kartashov in Go-go!
и объединить в новом
источник

zl

ziggy lucid in Go-go!
Andrey Kartashov
а роуты А и Б известны?
А и Б - готовые горилловские роутеры с заданными маршрутами и обработчиками
нужно их объединить в один http.Handler
источник

AK

Andrey Kartashov in Go-go!
ziggy lucid
А и Б - готовые горилловские роутеры с заданными маршрутами и обработчиками
нужно их объединить в один http.Handler
источник

AK

Andrey Kartashov in Go-go!
только тебе strip не нужен, просто сделать walk по роутам и зарегистрировать их в handler
источник

zl

ziggy lucid in Go-go!
Andrey Kartashov
хотя, их можно достать через Walk - тогда главное, чтоб они е пересекались
да, похоже на то, что надо
не заметил
источник

AK

Andrey Kartashov in Go-go!
routerC := http.NewServeMux()
routerA.Walk(func(route *mux.Route, router *mux.Router, ancestors []*mux.Route) error {
       t, _ := route.GetPathTemplate()
       routerC.Handle(t, routerA)
       return nil
   })
routerB.Walk(func(route *mux.Route, router *mux.Router, ancestors []*mux.Route) error {
       t, _ := route.GetPathTemplate()
       routerC.Handle(t, routerB)
       return nil
   })
источник

AK

Andrey Kartashov in Go-go!
как-то так
источник