Fiber 项目介绍

未匹配的标注

Fiber 是一个受到 Express 启发的 Web 框架,基于使用 Go 语言编写的最快的 HTTP 引擎 Fasthttp 构建。旨在通过零内存分配高性能服务,使快速开发更加简便。

⚡️ 快速入门#

package main

import "github.com/gofiber/fiber/v2"

func main() {
    app := fiber.New()

    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Hello, World 👋!")
    })

    app.Listen(":3000")
}

🤖 基准测试#

这些测试由 TechEmpowerGo Web 完成。如果您想查看所有结果,请访问我们的 Wiki

Readme

Readme

⚙️ 安装#

确保已安装 (下载) 1.14 或更高版本的 Go。

通过创建文件夹并在文件夹内运行 go mod init github.com/your/repo (了解更多) 来初始化项目,然后使用 go get 命令安装 Fiber:

go get -u github.com/gofiber/fiber/v2

🎯 特点#

💡 哲学#

Node.js 切换到 Go 的新 gopher 在开始构建 Web 应用程序或微服务之前需要经历学习过程。 Fiber 作为一个 Web 框架 ,是按照极简主义的思想并遵循 UNIX 方式创建的,因此新的 gopher 可以在热烈和可信赖的欢迎中迅速进入 Go 的世界。

Fiber 受到了互联网上最流行的 Web 框架 Express启发 。我们结合了 Express易用性Go原始性能 。如果您曾经在 Node.js 上实现过 Web 应用程序 (使用 Express 或类似工具),那么许多方法和原理对您来说应该非常易懂

我们关注 整个互联网 用户在 issues 和 Discord channel 的消息,为了创建一个迅速灵活以及友好Go web 框架,满足任何任务,最后期限和开发者技能。就像 ExpressJavaScript 世界中一样。

限制#

  • 由于 Fiber 使用了 unsafe 特性,导致其可能与最新的 Go 版本不兼容。Fiber 2.18.0 已经在 Go 1.14 到 1.17 上验证过。
  • Fiber 与 net/http 接口不兼容。这意味着你无法使用 gqlen,go-swagger 或者任何其他属于 net/http 生态的项目。

👀 示例#

下面列出了一些常见示例。如果您想查看更多代码示例,请访问我们的 Recipes 代码库或 API 文档

📖 基础路由#

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"))
}

📖 静态文件服务#

func main() {
    app := fiber.New()

    app.Static("/", "./public")
    // => http://localhost:3000/js/script.js
    // => http://localhost:3000/css/style.css

    app.Static("/prefix", "./public")
    // => http://localhost:3000/prefix/js/script.js
    // => http://localhost:3000/prefix/css/style.css

    app.Static("*", "./public/index.html")
    // => http://localhost:3000/any/path/shows/index/html

    log.Fatal(app.Listen(":3000"))
}

📖 中间件Next#

func main() {
    app := fiber.New()

    // Match any route
    app.Use(func(c *fiber.Ctx) error {
        fmt.Println("🥇 First handler")
        return c.Next()
    })

    // Match all routes starting with /api
    app.Use("/api", func(c *fiber.Ctx) error {
        fmt.Println("🥈 Second handler")
        return c.Next()
    })

    // GET /api/register
    app.Get("/api/list", func(c *fiber.Ctx) error {
        fmt.Println("🥉 Last handler")
        return c.SendString("Hello, World 👋!")
    })

    log.Fatal(app.Listen(":3000"))
}

📚 展示更多代码示例

🧬 内部中间件#

以下为包含在 Fiber 框架中的中间件列表。

中间件 描述
basicauth 基本身份验证中间件提供 HTTP 基本身份验证。 它为有效凭证用户调起下一步的处理程序,为丢失或无效凭证响应 401 Unauthorized。
compress Fiber 的压缩中间件,默认支持’ deflate ‘,’ gzip ‘和’ brotli ‘。
cache 拦截和缓存响应
cors 使用各种选项启用跨源资源共享 (CORS)。
csrf 保护系统不受 CSRF 漏洞攻击。
filesystem Fiber 文件系统中间件,特别感谢 Alireza Salary。
favicon 如果提供了文件路径,则忽略日志中的图标或从内存中服务。
limiter 用于 Fiber 的限速中间件。 用于限制对公共 api 和 / 或端点的重复请求,如密码重置。
logger HTTP 请求 / 响应日志。
pprof 特别感谢 Matthew Lee (@mthli)
proxy 允许您将请求代理到多个服务器
requestid 为每个请求添加一个 requestid。
recover 恢复中间件从堆栈链中的任何位置的 Panic 中恢复,并将集中处理。 ErrorHandler
timeout 添加请求的最大时间,如果超过了,则触发 ErrorHandler。

🧬 外部中间件#

以下为外部托管的中间件列表,由 Fiber 团队维护。

中间件 描述
adaptor net/http 处理程序与 Fiber 请求处理程序之间的转换器,特别感谢 @arsmn!
helmet 通过设置各种 HTTP 头帮助保护您的应用程序。
jwt JWT 返回一个 JSON Web Token (JWT) 身份验证中间件。
keyauth Key auth 中间件提供基于密钥的身份验证。
rewrite Rewrite 中间件根据提供的规则重写 URL 路径。它有助于向后兼容或者创建更清晰、更具描述性的链接。
session 这个 session 中间件建立在 @savsgio MIT 的 fasthttp/session 之上。特别感谢 @thomasvvugt 为这个中间件提供帮助!
template 该软件包包含 8 个模板引擎,可与 Fiber v1.10.x Go 1.13 或更高版本一起使用。
websocket 基于 Fasthttp WebSocket for Fiber 与 Locals 支持!

🌱 第三方中间件#

这是由 Fiber 社区创建的中间件列表,如果您想看到自己的中间件,请创建 PR

👍 贡献#

如果您要说声谢谢或支持 Fiber 的积极发展:

  1. FiberGitHub Star 点个 ⭐ 星星。
  2. Twitter 上发布有关项目的推文
  3. MediumDev.to 或个人博客上写评论或教程。
  4. 通过捐赠一杯咖啡来支持本项目。

☕ 支持者#

Fiber 是一个开源项目,依靠捐赠来支付账单,例如我们的域名,gitbooknetlify 和无服务器托管。如果要支持 Fiber,可以 ☕ 在这里买一杯咖啡

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~