fiber 是一个建立在 fasthttp 之上的 Go Web 框架,fasthttp 是 Go 最快的 HTTP 引擎。它旨在简化快速开发,同时考虑到零内存分配和性能。
fiber框架具有以下特点:
高性能:fiber建立在fasthttp之上,同时在内部实现上全面考虑到了零内存分配,让使用fiber构建的http服务高速运行,同时占用很少的内存资源。
简单易用:fiber框架的API设计简洁明了,易于学习和使用。它提供了一套丰富的中间件和插件,可以帮助开发者快速构建应用程序。同时,fiber框架还支持路由分组和嵌套路由,使得应用程序的结构更加清晰。
轻量级:fiber框架的代码量相对较小,不依赖于其他第三方库,因此它的部署和运行都非常简单。这使得fiber框架非常适合用于构建微服务架构和云原生应用程序。
社区支持:fiber框架拥有一个活跃的社区,提供了大量的文档和示例代码,可以帮助开发者快速上手。同时,fiber框架的维护者也积极参与社区的讨论和反馈,及时修复问题和改进框架。
fiber是一个高性能、简单易用、轻量级的go语言web框架,适合用于构建RESTful API和web应用程序。如果你正在寻找一个快速、简单且高效的web框架,那么fiber绝对值得一试。
以下为大家列举一下fiber 官方的一些代码实例,希望大家可以从此了解一些fiber的特点.
1.先来一个hello world,可以看出使用非常少的代码我们就创建了一个http服务
package main
import (
"log"
"github.com/gofiber/fiber/v2"
)
func main() {
app := fiber.New()
app.Get("/", func (c *fiber.Ctx) error {
return c.SendString("Hello, World!")
})
log.Fatal(app.Listen(":3000"))
}
2.路由的写法也是非常简单
app.Get("/", func (c *fiber.Ctx) error {
return c.SendString("GET request")
})
app.Get("/:param", func (c *fiber.Ctx) error {
return c.SendString("param: " + c.Params("param"))
})
app.Post("/", func (c *fiber.Ctx) error {
return c.SendString("POST request")
})
3.静态文件
app.Static("/", "./public")
// => http://localhost:3000/hello.html
// => http://localhost:3000/js/jquery.js
// => http://localhost:3000/css/style.css
// serve from multiple directories
app.Static("/", "./files")
4.api的实现也非常简单
app.Get("/api/posts", func (c *fiber.Ctx) error {
posts := getPosts() // your logic
if len(posts) == 0 {
return c.Status(404).JSON(&fiber.Map{
"success": false,
"error": "There are no posts!",
})
}
return c.JSON(&fiber.Map{
"success": true,
"posts": posts,
})
})
5.中间件非常灵活.可以设置全局中间件,也可以分组设置或者单个设置
package main
import (
"log"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
)
func main() {
app := fiber.New()
app.Use(cors.New())
app.Use(func (c *fiber.Ctx) error {
if c.Is("json") {
return c.Next()
}
return c.SendString("Only JSON allowed!")
})
app.Get("/", func(c *fiber.Ctx) error {
return c.JSON(fiber.Map{
"message": "Hello World",
})
})
log.Fatal(app.Listen(":3000"))
}
同时fiber也集成了很多常用的中间件我整理了一些,具体用法和更多的中间件大家可以查看官方文档「链接」
Logger - 记录HTTP请求的详细信息到控制台。
Recover - 捕获任何panic并返回一个500内部服务器错误。
Session - 提供会话管理功能。
Limiter - 限制客户端的请求频率,用于防止滥用和DoS攻击。
CSRF - 提供跨站请求伪造保护。
Compress - 为响应提供压缩功能,减少传输数据的大小。
CORS - 允许开发者配置跨源资源共享。
JWT - 提供JSON Web Tokens验证功能。
Timeout - 设置请求的超时时间。
BodyLimit - 限制请求体的最大大小。
RequestID - 为每个请求生成一个唯一的ID,便于跟踪。
ContentType - 检查或设置请求和响应的Content-Type。
MethodOverride - 允许使用自定义的逻辑来覆盖HTTP请求方法。
Cache - 为响应提供缓存控制功能。
BasicAuth - 提供基本的HTTP认证功能。
6.模板支持
package main
import (
"log"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html"
)
func main() {
app := fiber.New(fiber.Config{
Views: html.New("./views", ".html"),
})
app.Get("/", func(c *fiber.Ctx) error {
return c.Render("index", fiber.Map{
"Title": "Hello, World!",
})
})
log.Fatal(app.Listen(":3000"))
fiber支持的模板
- ace
- amber
- django
- handlebars
- html
- jet
- mustache
- pug
- slim
7.WebSocket 支持
app.Get("/ws", websocket.New(func(c *websocket.Conn) {
// Websocket logic
for {
mtype, msg, err := c.ReadMessage()
if err != nil {
break
}
log.Printf("Read: %s", msg)
err = c.WriteMessage(mtype, msg)
if err != nil {
break
}
}
log.Println("Error:", err)
}))
8.限速器
package main
import (
"log"
"time"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/limiter"
)
func main() {
app := fiber.New()
// 3 requests per 10 seconds max
app.Use(limiter.New(limiter.Config{
Expiration: 10 * time.Second,
Max: 3,
}))
// ...
log.Fatal(app.Listen(":3000"))
}
以上仅介绍了fiber的一部分功能和特性介绍,它还有更多的功能和插件等待大家去了解.fiber虽然是一个轻量级的web框架,但是轻量不等于简陋,fiber专注于web,而且非常强大和快速.
希望分享的fiber能给大家带来帮助.有问题可以评论交流.
fiber官方网站 Fiber
fiber 中文文档(非官方) 《Go Fiber 中文文档》 | Go 技术论坛