Fiber v2是当前生产环境唯一推荐的稳定版本,v3仍处测试阶段;需Go 1.17+(建议1.24+),安装命令为go get -u github.com/gofiber/fiber/v2,最小服务示例可验证框架就位。

Fiber v2 是当前生产环境唯一推荐的稳定版本,v3 仍处于测试阶段,不建议用于关键服务。
安装 fiber/v2 并确认 Go 版本
必须使用 Go 1.17+(官方最低要求),但强烈建议用 Go 1.24+(与 v2 兼容性最稳)。运行以下命令安装:
go get -u github.com/gofiber/fiber/v2
注意:go get 在 Go 1.24+ 中默认启用 module 模式,无需额外 go mod init —— 但如果你看到 no required module provides package 错误,说明当前目录没初始化模块,补上:
go mod init myapp- 再执行安装命令
写一个能跑通的最小 server
复制粘贴这段代码到 main.go,它不含任何中间件、路由参数或错误处理,只验证框架是否就位:
package main
import "github.com/gofiber/fiber/v2"
func main() {
app := fiber.New()
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("OK")
})
app.Listen(":3000")
}
运行后访问 http://localhost:3000,返回 OK 即成功。常见失败点:
-
app.Listen(":3000")后没加log.Fatal→ 程序启动即退出(应改用log.Fatal(app.Listen(":3000"))) - 端口被占用 → 改成
:8080或先lsof -i :3000杀掉旧进程 - 忘记
return→ handler 函数末尾漏了return,编译报missing return
添加 JSON 响应和路径参数支持
真实接口几乎都返回 JSON,且需要读 URL 参数。下面这个路由同时演示两件事:
app.Get("/user/:id", func(c *fiber.Ctx) error {
id := c.Params("id")
return c.JSON(fiber.Map{
"id": id,
"name": "demo",
})
})
访问 /user/123 会返回 {"id":"123","name":"demo"}。关键注意:
-
c.Params("id")返回的是string,不是int—— Fiber 不自动类型转换,需手动strconv.Atoi - 所有
c.Params、c.Query、c.Body返回的值生命周期仅限当前 handler —— 如果存到 goroutine 或全局变量里,下个请求可能读到脏数据 - 想让这些值“安全持久化”,要么用
utils.CopyString(c.Params("id")),要么初始化时设fiber.Config{Immutable: true}(性能略降)
为什么不用 fiber/v3?
v3 的 API 已有破坏性变更:比如 fiber.Ctx 接口签名调整、中间件注册方式微调、部分函数移入子包。目前(2026年9月)v3 的 GitHub issues 里仍有高优先级的 panic 报告,且文档更新滞后。除非你明确需要 v3 的新特性(如原生 streaming response 支持),否则别碰。v2 的维护仍在持续,最新版是 v2.52.0(2026年8月发布),修复了 fasthttp 底层在 HTTP/2 连接复用下的竞态问题 —— 这个 bug 在 v3 测试版里还没合入。


















