Golang最快的Web框架

发布于:2024-04-19 ⋅ 阅读:(42) ⋅ 点赞:(0)

一、概述

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