fiber路由注册即函数调用,路径必须以/开头;:id捕获单段,*仅末尾多段;handler须显式return error;use不消耗路径段,group拼接前缀。

直接用 app.Get、app.Post 这类方法注册就行,不需要额外初始化路由表或手动调用底层 Add —— Fiber 的路由注册就是函数调用本身。
路径必须带前导斜杠
Fiber 匹配路径时严格区分 /users 和 users。漏掉开头的 / 会导致永远 404:
-
app.Get("users", h)❌ 不会匹配任何请求 -
app.Get("/users", h)✅ 正确写法 - 子路由也一样:
api.Get("/users")才匹配/api/users,不是api.Get("users")
参数提取用 :id,通配符 * 只能放末尾
:id 是单段捕获,* 是多段捕获,但两者不能混用,且 * 必须在路径最末端:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
-
/posts/:id✅ 提取123(来自/posts/123) -
/files/:user/*path❌ 启动报错:invalid pattern -
/static/*✅ 合法,匹配/static/css/app.css -
/v1/:resource/:id✅ 推荐拆分方式,别硬塞/v1/*
handler 必须返回 error 类型
Go 编译器会强制检查,常见翻车点是删了 return:
-
return c.SendString("ok")✅ 正确 -
c.SendString("ok"); return nil✅ 可行,但冗余 -
c.SendString("ok")❌ 编译失败:missing return at end of function - 哪怕只写
return(无值)也不行,必须显式return nil或带 error 的返回
app.Use 和 app.Group 的行为差异
二者都“挂载”逻辑,但语义和匹配规则完全不同:
-
app.Use("/api", middleware):所有以/api开头的请求(无论 GET/POST/PUT)都会进这个中间件,且它不消耗路径段 —— 后续路由仍看到完整路径 -
app.Group("/api"):返回一个新*fiber.Router,后续.Get("/users")实际注册的是/api/users,路径前缀被拼进去了 -
app.Use("/api", subApp)是挂载子应用,subApp 内部路由从/开始匹配,/api/users会变成subApp.Get("/users") - 别把
Group当成中间件用 —— 它不执行逻辑,只组织路由;Use才真正运行代码
最容易忽略的是路径拼接逻辑:Group 的前缀和子路由路径是字符串拼接,不是嵌套作用域,写错一次就多一层 /api/api/users,调试时得盯着 c.Path() 看实际进来的路径是什么。










