一、概述
Fiber是在Go最快的HTTP引擎Fasthttp之上构建的Go web框架。它的设计目的是在考虑到零内存分配和性能的情况下简化快速开发。它的特性:
- 稳健的路由
- 提供静态文件
- 极致性能
- 内存占用空间低
- API终点
- 中间件和Next支持
- 快速服务器端编程
- 模板引擎
- WebSocket支持
- Socket.io支持
- 服务器发送的事件
- 速率限制器
Fiber的灵感来源于互联网上最流行的web框架Express。我们结合了Express的易用性和Go的原始性能。如果您曾经在Node.js中实现过web应用程序(使用Express或类似工具),那么许多方法和原理对您来说都是非常常见的。
使用Fiber注意事项,由于Fiber使用了unsafe,库可能并不总是与最新的Go版本兼容。Fiber3.0.0已通过Go版本1.21和1.22的测试。Fiber v3还在开发中,对于生产使用还不稳定,推荐选择Fiber v2。如果你想尝鲜,可以选择Fiber v3。Fiber与net/http接口不兼容,这意味着你将无法使用像gqlgen、go swagger或任何其他属于net/http生态系统的项目。
二、Hello World演示项目
package main
import (
"log"
"github.com/gofiber/fiber/v3"
)
func main() {
// Initialize a new Fiber app
app := fiber.New()
// Define a route for the GET method on the root path '/'
app.Get("/", func(c fiber.Ctx) error {
// Send a string response to the client
return c.SendString("Hello, World 👋!")
})
// Start the server on port 3000
log.Fatal(app.Listen(":3000"))
}
三、路由的写法
func main() {
app := fiber.New()
// GET /api/register
app.Get("/api/*", func(c fiber.Ctx) error {
msg := fmt.Sprintf("✋ %s", c.Params("*"))
return c.SendString(msg) // => ✋ register
})
// GET /flights/LAX-SFO
app.Get("/flights/:from-:to", func(c fiber.Ctx) error {
msg := fmt.Sprintf("💸 From: %s, To: %s", c.Params("from"), c.Params("to"))
return c.SendString(msg) // => 💸 From: LAX, To: SFO
})
// GET /dictionary.txt
app.Get("/:file.:ext", func(c fiber.Ctx) error {
msg := fmt.Sprintf("📃 %s.%s", c.Params("file"), c.Params("ext"))
return c.SendString(msg) // => 📃 dictionary.txt
})
// GET /john/75
app.Get("/:name/:age/:gender?", func(c fiber.Ctx) error {
msg := fmt.Sprintf("👴 %s is %s years old", c.Params("name"), c.Params("age"))
return c.SendString(msg) // => 👴 john is 75 years old
})
// GET /john
app.Get("/:name", func(c fiber.Ctx) error {
msg := fmt.Sprintf("Hello, %s 👋!", c.Params("name"))
return c.SendString(msg) // => Hello john 👋!
})
log.Fatal(app.Listen(":3000"))
}
Fiber是一个不错的Go Web框架,它有完善的文档,丰富的功能,极高的性能。
Github地址: https://github.com/gofiber/fiber