Fiber中Group不自动拼接前缀,必须显式写出完整路径(如api.Get("/users", h)匹配/api/users);路径字符串须以/开头,否则视为根路径,StrictRouting启用时/api/users与/api/users/视为不同路径。

嵌套路由在 Fiber 中不是靠自动拼接前缀实现的,Group 本身不修改路径匹配逻辑,必须显式写出完整路径;否则注册了 api.Get("/users", h) 却访问 /api/users,结果就是 404。
Group 不会自动补全父级前缀
Fiber 的 Group 是一个独立路由节点,它继承父中间件,但路径注册仍需你手动写全。比如:
api := app.Group("/api")
api.Get("/users", handler) // ✅ 匹配 /api/users
api.Post("/posts", handler) // ✅ 匹配 /api/posts
api.Get("/v1/users", handler) // ✅ 匹配 /api/v1/users,不是 /v1/users
常见错误是以为 app.Group("/api").Get("/users", h) 会等价于 app.Get("/api/users", h) —— 实际上确实等价,但仅因你写了完整路径;如果写成 api.Get("users", h)(缺前导斜杠),就变成匹配根路径 /users,和 Group 前缀完全无关。
- 路径字符串必须以
/开头,否则 Fiber 当作相对路径处理(实际是根路径) -
Group的Prefix字段只用于内部标识,不参与路由匹配计算 - 嵌套
Group可行,但易导致路径重复拼接,例如app.Group("/api").Group("/v2").Get("/users", h)→ 必须访问/api/v2/users,不能省略任一段
路由参数在 Group 中的写法要一致
参数提取逻辑和普通路由完全一样,但路径必须显式包含参数段:
admin := app.Group("/admin")
admin.Get("/users/:id", userHandler) // ✅ 匹配 /admin/users/123,c.Params("id") = "123"
admin.Get("/logs/:year/:month?", logHandler) // ✅ /admin/logs/2026 和 /admin/logs/2026/10 都匹配
注意::id 和通配符 * 不能混用,且通配符只能出现在路径末尾:
-
admin.Get("/files/:user/*path", h)❌ 启动报错:invalid pattern -
admin.Get("/v1/:resource/:id", h)✅ 推荐拆分多层动态段,而非用通配符兜底 - 别写
/admin//:id,Fiber 不支持双斜杠加参数,解析失败
Group 中间件只对本组内路由生效,且在全局之后
你在 Group 上挂的中间件,会在所有 app.Use() 之后、该组内 handler 之前执行:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
app.Use(logMW)
app.Use(authMW)
admin := app.Group("/admin")
admin.Use(adminAuthMW) // 这个会在 logMW → authMW → adminAuthMW → handler 中执行
admin.Get("/dashboard", dashboardHandler)
这意味着:
-
admin.Use(...)不会影响其他 Group 或根路由 - 顺序仍是“注册即执行”,
admin.Use(a)写在admin.Use(b)前面,则 a 在 b 前执行(请求阶段) - 若想让某个中间件覆盖整个 Group 生命周期(比如日志),它必须是该 Group 下第一个
Use(),而不是依赖全局顺序
StrictRouting 对 Group 路径的影响和修复方式
默认 StrictRouting: true 下,/api/users 和 /api/users/ 是两个不同路由。你只注册了 api.Get("/users", h),那访问 /api/users/ 就是 404。
别关 StrictRouting——它可能让 /api/users 和 /api/users/:id 冲突。更稳妥的做法是:
- 显式注册两种:
api.Get("/users", h)和api.Get("/users/", h) - 或加一个重定向中间件,统一把结尾带斜杠的请求 301 到无斜杠版本
- Group 本身不改变这个行为,它只是把前缀加到你写的路径前面,匹配规则照旧
最常被忽略的一点:Group 的路径前缀和 StrictRouting 是正交的,前者管“写哪”,后者管“怎么匹配”,二者叠加时容易误判 404 原因。调试时先确认你访问的 URL 是否和 Group 内注册的完整路径一字不差。










