🎭 分组
信息
通常情况下,Fiber 中的 Group 功能的行为与 ExpressJS 类似。组是虚拟声明的,在组中声明的所有路由都扁平化为一个带有前缀的列表,然后由框架按声明顺序进行检查。这意味着 Fiber 中 Group 的行为与 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"))
}