【问题标题】:How to add different middleware to routes under same sub route in gofibergofiber中如何给同一子路由下的路由添加不同的中间件
【发布时间】:2023-01-15 23:09:23
【问题描述】:

我有一个如下所示的路由配置,其中有一个基本路由和 5 个子路由

baseRoute := app.Group("/base")
baseRoute.Post("/sub_route1", handler1)
baseRoute.Post("/sub_route2", handler2)
baseRoute.Post("/sub_route3", handler3)
baseRoute.Post("/sub_route4", handler4)
baseRoute.Post("/sub_route5", handler5)

现在我有两个不同的中间件。我需要在子路径 1、2、3 上使用 middleware_1,在子路径 4、5 上使用 middleware_2。执行此操作的最佳语法是什么。我遇到的解决方案是使用 app.Use("/path", middleware) 方法并在每个路由中显式声明中间件。这是唯一的解决方案,还是我们有更简洁的方法。

【问题讨论】:

    标签: go routes middleware go-fiber


    【解决方案1】:

    你可以这样做:

    baseRoute := app.Group("/base")
    usesM1 := baseRoute.Group("/", middleware1)
    usesM1.Post("/sub_route1", handler1)
    usesM1.Post("/sub_route2", handler2)
    usesM1.Post("/sub_route3", handler3)
    usesM2 := baseRoute.Group("/", middleware2)
    usesM2.Post("/sub_route4", handler4)
    usesM2.Post("/sub_route5", handler5)
    

    【讨论】:

      【解决方案2】:

      你需要的是在中间件方法中使用 return ctx.Next() 让它在一个路由中通过多个方法。

      baseRoute.Post("/some_route", handler1, handler2, handler3, handler4)

      假设您有 handler2 需要执行并移动到 handler3 和 handler4 之后。

      你实现你的代码在每个处理程序中做一些检查。如果处理程序需要在满足条件时转到下一个处理程序,只需运行此 return ctx.Next()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-20
        • 2018-10-20
        • 1970-01-01
        • 2019-07-20
        • 2019-12-10
        • 2015-09-28
        • 1970-01-01
        相关资源
        最近更新 更多