Fiber 的灵魂之一就是中间件链。
看一个最常见的例子:
app.Use(func(c fiber.Ctx) error {
c.Set("X-City", "Fiber")
return c.Next()
})
app.Get("/hello", func(c fiber.Ctx) error {
return c.SendString("hello")
})执行顺序是:
请求进城
▼
先到 app.Use 检查站
▼
执行中间件逻辑
▼
调用 c.Next()
▼
放行到真正路由
▼
返回响应如果你不调用 c.Next(),车就停在检查站,不会继续往后走。
#1. 最重要的一句:c.Next() 就是“继续放行”
app.Use(func(c fiber.Ctx) error {
if c.Get("Authorization") == "" {
return c.SendStatus(fiber.StatusUnauthorized)
}
return c.Next()
})这就像:
- 没证件,直接拦下
- 有证件,继续放行到后面窗口
#2. 中间件也讲顺序
app.Use(requestid.New())
app.Use(logger.New())
app.Use(authMiddleware)这和现实中的路网完全一样:
- 先贴请求编号
- 再写日志
- 再做鉴权
顺序一乱,记录和行为都可能乱。
Fiber 官方 logger 文档甚至直接提醒:
注册顺序很重要,最好尽早注册。
#3. Use("/api", ...) 不是随便糊的
app.Use("/api", func(c fiber.Ctx) error {
return c.Next()
})它的含义是:
- 作用于
/api - 也作用于
/api/... - 但不作用于
/apixxx
所以你可以把它理解为“给某条主干快线设置检查站”。