fiber中app.get()、app.post()等方法通过“动词+路径+处理函数”显式注册路由,路径需带前导斜杠,参数用:id形式提取,handler必须返回error类型。

app.Get()、app.Post() 等方法就是创建简单路由最直接的方式,不需要额外配置或中间件。
用标准 HTTP 方法注册路由
Fiber 的路由绑定非常直白:动词 + 路径 + 处理函数。它不依赖装饰器或结构体标签,所有路由都通过app.Method() 显式声明。
-
app.Get("/users", handler)匹配 GET /users -
app.Post("/users", handler)匹配 POST /users -
app.Put("/users/:id", handler)中的:id是参数节点,会自动提取并存入c.Params("id") -
app.Delete("/posts/:id/:version?", handler)末尾的?表示该段可选,/posts/123 和 /posts/123/v2 都能命中
注意:路径开头的斜杠 / 是必须的;写成 "users"(无前导斜杠)会导致匹配失效。
参数名和通配符不能混用在同一个位置
Fiber 路由解析是单次线性匹配,不是正则回溯。这意味着:-
/users/:id/posts✅ 合法,:id捕获单一段 -
/users/<em>filepath</em>✅ 合法,必须在末尾,捕获剩余全部路径 -
/files/:user/*path❌ 启动报错:invalid pattern —— 通配符不能出现在非末尾位置 -
/v1/<em>/:id</em>❌ 不支持,和:id冲突,引擎无法确定优先级
如果你需要类似 /api/v2/users/123/profile 这种多层动态路径,应拆成 /api/:version/users/:id/:section,而不是强行塞通配符。
别漏掉返回 error 类型
Fiber 的 handler 签名固定为func(c *fiber.Ctx) error,且必须显式 return 错误或 nil:
-
return c.SendString("ok")✅ 正确,SendString返回error -
c.SendString("ok"); return nil✅ 也可,但不如上者简洁 -
c.SendString("ok")❌ 编译失败:missing return at end of function
常见错误是复制粘贴时删掉了 return,Go 编译器会直接报错,但新手容易卡在这一步。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
StrictRouting 影响路径末尾斜杠匹配
默认开启StrictRouting: true,所以:
- 注册了
app.Get("/users", h) - 请求
GET /users/→ 404(不是 bug,是设计) - 请求
GET /users→ 正常执行
解决方式不是关 StrictRouting(易引发 /users 和 /users/:id 冲突),而是:
- 显式注册两种路径:
app.Get("/users", h)和app.Get("/users/", redirectHandler) - 或加统一重定向中间件:
if strings.HasSuffix(c.Path(), "/") && c.Path() != "/" { c.Redirect(strings.TrimSuffix(c.Path(), "/"), 301) }
生产环境务必确认前端 SDK、OpenAPI 文档、curl 示例全用无尾斜杠路径,避免上线后出现零星 404。
Fiber 路由本身足够轻量,但真正容易出问题的地方往往不在写法,而在路径语义是否对齐、参数命名是否一致、以及 StrictRouting 这类默认行为是否被意识到。










