Skip to main content
Version: v1.x

🎭 Grouping

Paths

Like Routing, groups can also have paths that belong to a cluster.

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

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

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

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

app.Listen(3000)
}

A Group of paths can have an optional handler.

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

app.Listen(3000)
}
caution

Running /api, /v1 or /v2 will result in 404 error, make sure you have the errors set.

Group Handlers

Group handlers can also be used as a routing path but they must have Next added to them so that the flow can continue.

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

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

v1 := api.Group("/v1", func(c *fiber.Ctx) {
c.JSON(fiber.Map{
"message": "v1",
})
c.Next()
}) // /api/v1
v1.Get("/list", handler) // /api/v1/list
v1.Get("/user", handler) // /api/v1/user

app.Listen(3000)
}