Fiber v3 是当前稳定主线,需 Go ≥ 1.24,安装命令为 go get -u github.com/gofiber/fiber/v3;REST 路由须遵循资源路径规范,禁用动词式路径;参数需显式类型转换;请求体解析后须校验字段;状态码须严格匹配 HTTP 语义并使用 fiber 包常量。

直接用 go get -u github.com/gofiber/fiber/v3 安装,别用 v2 —— v3 是当前稳定主线(v2 已归档,新项目用 v3 才能获得持续更新和安全修复)。
安装 Fiber v3 的正确命令与 Go 版本要求
Fiber v3 要求 Go ≥ 1.24,低于这个版本会编译失败或运行时 panic。检查方式:go version;若过旧,先升级 Go 再执行:
go get -u github.com/gofiber/fiber/v3
- 不要加
/v2,那个分支已停止维护 - 不推荐用
go install方式,Fiber 是库不是 CLI 工具 - 如果项目已有
go.mod,运行go mod tidy自动拉取依赖更稳妥
定义 RESTful 路由时必须遵守的路径规则
REST 不是靠框架自动实现的,而是靠你写对路径和方法。Fiber 允许任意写法,但真要符合 REST,必须:
使用 GET /v1/files/:key 和 /v1/images/:key 端点从 Figma 文件中导出设计资源。支持 SVG、PNG 和 PDF 导出,并可设置缩放和格式参数。
-
/todos→ 支持GET(列表)、POST(创建)✅ -
/todos/:id→ 支持GET(单个)、PUT(全量更新)、DELETE(删除)✅ - 禁用
/getTodo、/deleteTodoById这类动词路径 ❌——它破坏资源抽象,前端无法缓存、代理难路由 -
c.Params("id")返回的是string,必须显式转类型:id, err := strconv.Atoi(c.Params("id")),否则查数据库时可能匹配错行或 panic
解析请求体后务必校验字段,不能只看 c.BodyParser() 是否报错
c.BodyParser(&todo) 只负责 JSON 反序列化成功与否,不会拦截空字符串、零值或非法格式。例如:
type Todo struct {
ID int `json:"id"`
Title string `json:"title"`
}
- 客户端发
{"title":""},BodyParser仍返回nil错误,但todo.Title == "" - 正确做法:解析后立刻检查关键字段:
if todo.Title == "" { c.Status(400).Send("title required") } - 更可靠方案:引入
go-playground/validator,加 tag:Title string `json:"title" validate:"required,min=1"`,再调用validate.Struct(todo)
状态码必须匹配 HTTP 语义,别全用 200
前端靠状态码判断操作结果,混用会导致逻辑错乱。Fiber 提供了标准常量,该用就得用:
-
GET /todos→c.Status(fiber.StatusOK).JSON(todos)(200) -
POST /todos→c.Status(fiber.StatusCreated).JSON(todo)(201) -
DELETE /todos/123→c.SendStatus(fiber.StatusNoContent)(204),不是SendString("")(那会返回 200) -
未找到资源→c.Status(fiber.StatusNotFound).Send("not found")(404)
最容易被忽略的是 SendStatus 和 SendString 的区别:前者只设状态码无 body,后者强制带 text/plain body 并默认 200 —— 用错一个,前端就收不到预期响应。

















