All() 方法将路径同时注册为七种HTTP方法处理器,适合统一处理跨方法逻辑;Add() 显式指定方法列表更精准;Use() 仅为中间件,不替代路由绑定;Fiber 不自动解析表单数据,需手动调用对应方法。

用 app.All() 绑定所有方法到同一路径
最直接的方式是用 All() 方法,它会把指定路径同时注册为 GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS 这七种标准方法的处理器。适合需要统一处理跨方法逻辑的场景,比如预检、日志、权限校验。
- 它不区分请求方法,所有匹配路径的请求都会进同一个 handler
- 如果后续需要按 method 分支处理,得在 handler 里手动判断
c.Method() - 注意:它不会自动响应 OPTIONS 预检请求(除非你显式处理),CORS 中间件仍需单独配置
用 app.Add() 显式列出多个方法
当只需要绑定其中几个方法(比如只支持 GET 和 POST),或想为不同方法配不同 handler 时,Add() 更精准。它接受方法名字符串切片和 handler 函数。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 写法示例:
app.Add([]string{"GET", "POST"}, "/api/data", handler) - 比重复写
app.Get()+app.Post()更紧凑,尤其方法多时 - 注意:方法名必须大写且拼写准确,
"get"或"Get"都不生效 - 它不提供方法间共享状态,每个方法仍是独立调用栈
为什么不用 app.Use()?
Use() 是中间件注册方法,只对匹配路径的请求执行前置/后置逻辑,不能替代路由绑定。它不会响应请求体,也不会终止请求流程——除非你主动调用 c.Next() 或 c.Status().Send()。
- 常见误用:试图用
Use("/path", handler)来“接收 POST”,结果发现 POST 请求 404 - 根本原因:
Use()不注册任何 HTTP 方法,它只挂载中间件链 - 正确组合:用
app.Post()绑定路由,再用app.Use(middleware)注入通用逻辑
容易忽略的兼容性细节
Fiber 的路由系统基于 fasthttp,它默认不解析 Content-Type: application/x-www-form-urlencoded 的 body,也不自动处理 multipart 表单。如果你在同一个路由上混用 GET 查询参数和 POST 表单数据,得自己调用 c.BodyParser() 或 c.FormValue(),不能依赖统一绑定。
- GET 请求:用
c.QueryParam("key")取 query string - POST/PUT:用
c.Body()或c.FormValue("key"),取决于 Content-Type - 没有类似 Spring Boot 的
@RequestBody+@RequestParam自动合并机制 - 路径参数(如
/user/:id)对所有方法都生效,但 query 和 body 必须按方法分别处理


















