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 光纤文件系统中间件,特别感谢 Alireza Salary.
favicon 如果提供了文件路径,则忽略日志中的图标或从内存中服务.
limiter 用于光纤的限速中间件。 用于限制对公共api和/或端点的重复请求,如密码重置.
logger HTTP请求/响应日志.
pprof 特别感谢 Matthew Lee (@mthli)
proxy 允许您将请求proxy到多个服务器
requestid 为每个请求添加一个requesttid.
recover 恢复中间件从堆栈链中的任何位置的恐慌中恢复,并将控制处理到集中式. 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 网站上。

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


暂无话题~