跳到主要内容
版本:v2.x

🎭 分组

信息

总的来说,Fiber 中的分组(Group)功能与 ExpressJS 类似。分组是虚拟声明的,分组内声明的所有路由都会被展平为一个带有前缀的列表,然后由框架按照声明的顺序进行检查。这意味着 Fiber 中分组的行为与 ExpressJS 完全一致。

路径

就像 路由 一样,分组也可以拥有属于某个簇的路径。

func main() {
app := fiber.New()

api := app.Group("/api", middleware) // /api

v1 := api.Group("/v1", middleware) // /api/v1
v1.Get("/list", handler) // /api/v1/list
v1.Get("/user", handler) // /api/v1/user

v2 := api.Group("/v2", middleware) // /api/v2
v2.Get("/list", handler) // /api/v2/list
v2.Get("/user", handler) // /api/v2/user

log.Fatal(app.Listen(":3000"))
}

路径的 分组 可以有一个可选的处理程序。

func main() {
app := fiber.New()

api := app.Group("/api") // /api

v1 := api.Group("/v1") // /api/v1
v1.Get("/list", handler) // /api/v1/list
v1.Get("/user", handler) // /api/v1/user

v2 := api.Group("/v2") // /api/v2
v2.Get("/list", handler) // /api/v2/list
v2.Get("/user", handler) // /api/v2/user

log.Fatal(app.Listen(":3000"))
}
注意

直接访问 /api, /v1/v2 将导致 404 错误,请确保你已经设置了错误处理。

分组处理程序

分组处理程序也可以用作路由路径,但必须在其中添加 Next 以便流程继续执行。

func main() {
app := fiber.New()

handler := func(c *fiber.Ctx) error {
return c.SendStatus(fiber.StatusOK)
}
api := app.Group("/api") // /api

v1 := api.Group("/v1", func(c *fiber.Ctx) error { // middleware for /api/v1
c.Set("Version", "v1")
return c.Next()
})
v1.Get("/list", handler) // /api/v1/list
v1.Get("/user", handler) // /api/v1/user

log.Fatal(app.Listen(":3000"))
}