2015-04-11 19 views
6

Używam gorilla/mux do moich potrzeb routingu. Ale zauważyłem jeden problem, kiedy zagnieżdżam wielu Subrouterów, to nie działa.Zagnieżdżanie podortowników w Gorilla Mux

Oto przykład:

func main() { 
    r := mux.NewRouter().StrictSlash(true) 
    api := r.Path("/api").Subrouter() 
    u := api.Path("/user").Subrouter() 
    u.Methods("GET").HandleFunc(UserHandler) 
    http.ListenAndServe(":8080", r) 
} 

chciałem użyć tej metody, więc mogę przekazać wypełniania router do innego pakietu, na przykład user.Populate(api)

Jednak to nie wydają się działać. Działa tylko wtedy, gdy używam pojedynczego Subroutera w łańcuchu.

Wszelkie pomysły?

Odpowiedz

8

Wymyśliłem, więc po prostu opublikuję to tutaj, na wypadek, gdyby ktoś był tak głupi jak ja. : D

Podczas tworzenia podsieci opartej na ścieżkach, musisz uzyskać ją z PathPrefix zamiast z Path.

r.PathPrefix("/api").Subrouter() 

Zastosowanie r.Path("/api") tylko podczas podłączania ładowarki do tego rodzaju działania.