goFiber/v2中调用GetRoutes()返回所有路由两次的原因咨询
goFiber/v2中调用GetRoutes()返回所有路由两次的原因咨询
嘿,作为GoFiber新手遇到这种情况真的会懵——明明只定义了GET路由,怎么GetRoutes()返回了双倍结果?我来给你捋清楚原因:
其实这是GoFiber的默认行为:它会为你手动定义的每个GET路由,自动注册对应的HEAD方法路由。
HTTP协议里的HEAD方法和GET逻辑几乎一致,唯一区别是HEAD只返回响应头、不返回响应体。为了帮开发者省事儿,框架默认自动为所有GET路由添加上HEAD的支持,所以你在输出里会看到每个路由都成对出现:一个是你写的GET方法,另一个是框架自动生成的HEAD方法。
你可以自己验证下:用curl发个HEAD请求到http://localhost:3000/api/v1/list,会发现能正常拿到响应头,这就是自动注册的HEAD路由在工作。
如果你的业务不需要这个默认行为,也可以关闭它——只需要在创建Fiber实例时,通过配置项禁用自动生成HEAD路由:
app := fiber.New(fiber.Config{ DisableHeaderRoute: true, // 关闭自动生成HEAD路由的默认行为 })
修改后再调用app.GetRoutes(true),就只会返回你手动定义的GET路由条目,不会再出现重复的情况了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

