零基础装 Fiber 必须先确认 Go ≥ 1.21,执行 go get github.com/gofiber/fiber/v2;fiber.New() 是唯一安全起点,StrictRouting 默认开启需用重定向中间件处理尾部斜杠,路径必须以 / 开头,参数仅支持 :id 格式。

直接上结论:零基础装 Fiber,go get github.com/gofiber/fiber/v2 是唯一推荐命令,但必须先确认 Go 版本 ≥ 1.21;跳过版本检查,go get 会静默失败或拉取不兼容旧版。
Go 版本不达标,go get 就是假成功
Fiber v2 要求 Go ≥ 1.21,v3 要求 ≥ 1.24。运行 go version 查当前版本。若显示 go version go1.20.15 或更低:
- 别试
go install golang.org/dl/go1.24@latest再执行go1.24 download—— 这是 v3 的路径,v2 项目不需要 - 正确做法是用官方升级方式:
go install golang.org/dl/go1.21@latest && go1.21 download - 升级后执行
go1.21 version确认,再切回默认go命令(通常软链已更新)
fiber.New() 是零基础唯一安全起点
别抄示例里 fiber.Default(),它默认加载 Logger、Recover、RequestID 三件套,开发时看着方便,但一跑压测就暴露问题:
- 每秒几百条含 Authorization 头的日志,磁盘 I/O 直接拖垮 QPS
-
recover.New()默认开启堆栈打印,生产环境完全没必要 - 正确初始化只有一行:
app := fiber.New() - 中间件按需加:调试时加
logger.New(),上线前删掉或换为带采样的轻量版
第一个路由跑不通?大概率是斜杠惹的祸
写了 app.Get("/users", handler),但访问 /users/ 返回 404,不是代码错,是 Fiber 默认 StrictRouting: true:
-
/users和/users/被视为两条独立路由 - 别关
StrictRouting: false—— 后续注册/users/:id时,/users/123可能被前者匹配,c.Params("id")拿不到值 - 推荐方案:加个重定向中间件,在
app.Use()里统一处理结尾斜杠app.Use(func(c *fiber.Ctx) error { if strings.HasSuffix(c.Path(), "/") && c.Path() != "/" { return c.Redirect(strings.TrimSuffix(c.Path(), "/"), 301) } return c.Next() })
最易被忽略的点:路径开头的 / 是强制的。app.Get("users", h) 永远不会响应 GET /users;参数写法只能是 :id,不是 {id} 或正则;app.Group("/api") 后,api.Get("/users", h) 才匹配 /api/users,不是 /api/api/users。











