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
发起讨论 只看当前版本


暂无话题~