fiber中注册get路由用app.get(),路径参数用c.params()获取,查询参数用c.query(),须显式调用c.json()或c.sendstring()响应,不可裸返回字符串。

GET请求的基本写法
在Fiber里注册GET路由,用 app.Get() 就行,第一个参数是路径,第二个是处理函数。处理函数接收 fiber.Ctx,它封装了请求和响应操作。
常见错误是直接返回字符串或结构体而不调用响应方法,比如写 return "hello" 会 panic——Fiber不支持裸返回,必须显式调用 c.SendString()、c.JSON() 等。
app.Get("/user", func(c fiber.Ctx) error { return c.JSON(fiber.Map{"id": 1, "name": "alice"}) })- 路径支持参数:
app.Get("/user/:id", ...),取值用c.Params("id") - 查询参数用
c.Query("page"),带默认值可写c.Query("page", "1")
处理查询参数和路径参数的差异
路径参数(:id)是URL路径的一部分,用于标识资源;查询参数(?sort=asc&limit=10)是可选修饰,语义不同,不能混用。
容易踩的坑:把数字型路径参数当整数直接用,比如 c.Params("id") 返回的是字符串,要转成 int 得手动解析,否则可能 panic 或逻辑出错。
- 安全转换示例:
id, err := strconv.Atoi(c.Params("id")),记得检查err - 查询参数默认是字符串,
c.Query("limit")返回"10",不是10 - Fiber不自动绑定查询参数到结构体,要用
c.QueryInt()、c.QueryBool()等辅助方法
响应内容类型与常见错误
Fiber不会根据返回值自动设 Content-Type,c.JSON() 会设 application/json,c.SendString() 是 text/plain; charset=utf-8,但 c.Status(200).Send() 不设类型头,浏览器可能乱码。
Colly 是一个用于 Go 语言的快速开源爬取和爬虫框架。它适用于从简单的页面提取到异步爬虫处理大量页面集合,支持请求回调和结构化解析。
另一个典型问题:在中间件或处理器里多次调用 c.SendXXX(),会 panic 报 "body write after headers sent",因为HTTP响应只能写一次。
- 返回JSON优先用
c.JSON(),别用c.Send([]byte(...))手动序列化 - 返回纯文本用
c.SendString("ok"),不是c.Send([]byte("ok"))(后者没设类型头) - 需要自定义状态码+JSON,用
c.Status(404).JSON(fiber.Map{"error": "not found"})
开发时调试GET请求的小技巧
本地调试别只靠浏览器访问,浏览器会缓存GET请求,改了代码没反应,很像服务没更新——其实是304缓存命中。用 curl -v http://localhost:3000/user/1 看真实响应头和状态码更可靠。
另外,Fiber默认不打印日志,加个简单日志中间件能快速确认请求是否进来、参数是否正确:
app.Use(func(c fiber.Ctx) error {
log.Printf("GET %s | %s", c.Path(), c.Request().URI().QueryString())
return c.Next()
})
路径匹配区分大小写,默认开启,/User 和 /user 是两个路由——如果想忽略大小写,初始化App时加配置:fiber.New(fiber.Config{CaseSensitive: false})。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










