16

gorilla/mux私はルーティングのニーズに使用してきました。しかし、複数のサブルーターをネストすると機能しないという問題に気付きました。

次に例を示します。

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)
}

このアプローチを使用したかったので、ルーターの設定を他のパッケージに委任できます。たとえば、user.Populate(api)

しかし、これはうまくいかないようです。チェーンで単一のサブルーターを使用する場合にのみ機能します。

何か案は?

4

3 に答える 3

0

UIルーターとAPIルーターを分離する必要がある場合は、OPが提案したことを簡単に実行できます。

appRouter := r.PathPrefix("/").Subrouter()
appRouter.Use(myAppRouter)
apiRouter := r.PathPrefix("/api").Subrouter()
apiRouter.Use(myAPIRouter)

答えを提供してくれたOPに感謝します。うまくいけば、私のユースケースのためにすべてを1か所にまとめることで、誰かを助けることができます.

于 2020-03-30T23:40:21.967 に答える