GO中不同的路径如何使用不同的中间件?
How to use different middlewares for different paths in GO?
您好,我正在使用 justinas/alice,我想根据路径创建不同的中间件。即,如果我有路径 1 和路径 2,我想为路径 1 应用 m1、m2、m3,为路径 2 应用 m1、m2
我试过了:
- 首先创建两个 mux 路由器:
router := mux.NewRouter()
router2 := mux.NewRouter()
- 为它们分配路径:
router.HandleFunc(path1,Func1)
router2.HandleFunc(path2,Func2)
- 然后我想要这样的东西
middlewares:=alice.New(m1,m2).Then(router2)
middlewaress:=middlewares.Append(middlewares)
- 然后:
if err := http.ListenAndServe(fmt.Sprintf(":%d", sconf.Server.Port), middlewaress); err != nil {
}
我该怎么做?
您需要将 router
和 router
的处理程序设置为从 alice
返回的链。
// define routers
router := mux.NewRouter() // assuming this is gorilla mux
router2 := mux.NewRouter()
// create alice chains
chain1 := alice.New(m1, m2, m3).Then(func1)
chain2 := alice.New(m1, m2).Then(func2)
// set chains as path handlers
router.HandleFunc(path1, chain1)
router2.HandleFunc(path2, chain2)
您好,我正在使用 justinas/alice,我想根据路径创建不同的中间件。即,如果我有路径 1 和路径 2,我想为路径 1 应用 m1、m2、m3,为路径 2 应用 m1、m2
我试过了:
- 首先创建两个 mux 路由器:
router := mux.NewRouter()
router2 := mux.NewRouter()
- 为它们分配路径:
router.HandleFunc(path1,Func1)
router2.HandleFunc(path2,Func2)
- 然后我想要这样的东西
middlewares:=alice.New(m1,m2).Then(router2)
middlewaress:=middlewares.Append(middlewares)
- 然后:
if err := http.ListenAndServe(fmt.Sprintf(":%d", sconf.Server.Port), middlewaress); err != nil {
}
我该怎么做?
您需要将 router
和 router
的处理程序设置为从 alice
返回的链。
// define routers
router := mux.NewRouter() // assuming this is gorilla mux
router2 := mux.NewRouter()
// create alice chains
chain1 := alice.New(m1, m2, m3).Then(func1)
chain2 := alice.New(m1, m2).Then(func2)
// set chains as path handlers
router.HandleFunc(path1, chain1)
router2.HandleFunc(path2, chain2)