Adding upstream version 2.52.6.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
a960158181
commit
6d002e9543
441 changed files with 95392 additions and 0 deletions
79
docs/guide/grouping.md
Normal file
79
docs/guide/grouping.md
Normal file
|
@ -0,0 +1,79 @@
|
|||
---
|
||||
id: grouping
|
||||
title: 🎭 Grouping
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
:::info
|
||||
In general, the Group functionality in Fiber behaves similarly to ExpressJS. Groups are declared virtually and all routes declared within the group are flattened into a single list with a prefix, which is then checked by the framework in the order it was declared. This means that the behavior of Group in Fiber is identical to that of ExpressJS.
|
||||
:::
|
||||
|
||||
## Paths
|
||||
|
||||
Like **Routing**, groups can also have paths that belong to a cluster.
|
||||
|
||||
```go
|
||||
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"))
|
||||
}
|
||||
```
|
||||
|
||||
A **Group** of paths can have an optional handler.
|
||||
|
||||
```go
|
||||
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"))
|
||||
}
|
||||
```
|
||||
|
||||
:::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.
|
||||
|
||||
```go
|
||||
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"))
|
||||
}
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue