[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1266":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":40,"readmeContent":41,"aiSummary":42,"trendingCount":16,"starSnapshotCount":16,"syncStatus":43,"lastSyncTime":44,"discoverSource":45},1266,"fiber","gofiber\u002Ffiber","gofiber","⚡️ Express inspired web framework written in Go","https:\u002F\u002Fgofiber.io",null,"Go",39832,1993,283,41,0,36,128,13,44.9,"MIT License",false,"main",true,[26,27,28,5,29,30,31,32,33,34,35,36,37,38,39],"express","expressjs","fast","flexible","framework","friendly","go","golang","hacktoberfest","hacktoberfest2020","nodejs","performance","rest-api","web","2026-06-12 02:00:25","\u003Ch1 align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgofiber.io\">\n    \u003Cpicture>\n      \u003Csource height=\"125\" media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fgofiber\u002Fdocs\u002Fmaster\u002Fstatic\u002Fimg\u002Flogo-dark.svg\">\n      \u003Cimg height=\"125\" alt=\"Fiber\" src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fgofiber\u002Fdocs\u002Fmaster\u002Fstatic\u002Fimg\u002Flogo.svg\">\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n  \u003Cbr>\n  \u003Ca href=\"https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Fv3#pkg-overview\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%F0%9F%93%9A%20godoc-pkg-00ACD7.svg?color=00ACD7&style=flat-square\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Fv3\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%F0%9F%93%9D%20goreport-A%2B-75C46B?style=flat-square\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002Fgofiber\u002Ffiber\" >\n   \u003Cimg alt=\"Codecov\" src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002Fgofiber\u002Ffiber?token=3Cr92CwaPQ&style=flat-square&logo=codecov&label=codecov\">\n \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Factions?query=workflow%3ATest\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fgofiber\u002Ffiber\u002Ftest.yml?branch=main&label=%F0%9F%A7%AA%20tests&style=flat-square&color=75C46B\">\n  \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fdocs.gofiber.io\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%F0%9F%92%A1%20fiber-docs-00ACD7.svg?style=flat-square\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgofiber.io\u002Fdiscord\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F704680098577514527?style=flat-square&label=%F0%9F%92%AC%20discord&color=00ACD7\">\n  \u003C\u002Fa>\n\u003C\u002Fh1>\n\u003Cp align=\"center\">\n  \u003Cem>\u003Cb>Fiber\u003C\u002Fb> is an \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fexpressjs\u002Fexpress\">Express\u003C\u002Fa> inspired \u003Cb>web framework\u003C\u002Fb> built on top of \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvalyala\u002Ffasthttp\">Fasthttp\u003C\u002Fa>, the \u003Cb>fastest\u003C\u002Fb> HTTP engine for \u003Ca href=\"https:\u002F\u002Fgo.dev\u002Fdoc\u002F\">Go\u003C\u002Fa>. Designed to \u003Cb>ease\u003C\u002Fb> things up for \u003Cb>fast\u003C\u002Fb> development with \u003Ca href=\"https:\u002F\u002Fdocs.gofiber.io\u002F#zero-allocation\">\u003Cb>zero memory allocation\u003C\u002Fb>\u003C\u002Fa> and \u003Cb>performance\u003C\u002Fb> in mind.\u003C\u002Fem>\n\u003C\u002Fp>\n\n---\n\n## ⚙️ Installation\n\nFiber requires **Go version `1.25` or higher** to run. If you need to install or upgrade Go, visit the [official Go download page](https:\u002F\u002Fgo.dev\u002Fdl\u002F). To start setting up your project, create a new directory for your project and navigate into it. Then, initialize your project with Go modules by executing the following command in your terminal:\n\n```bash\ngo mod init github.com\u002Fyour\u002Frepo\n```\n\nTo learn more about Go modules and how they work, you can check out the [Using Go Modules](https:\u002F\u002Fgo.dev\u002Fblog\u002Fusing-go-modules) blog post.\n\nAfter setting up your project, you can install Fiber with the `go get` command:\n\n```bash\ngo get -u github.com\u002Fgofiber\u002Ffiber\u002Fv3\n```\n\nThis command fetches the Fiber package and adds it to your project's dependencies, allowing you to start building your web applications with Fiber.\n\n## ⚡️ Quickstart\n\nGetting started with Fiber is easy. Here's a basic example to create a simple web server that responds with \"Hello, World 👋!\" on the root path. This example demonstrates initializing a new Fiber app, setting up a route, and starting the server.\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n)\n\nfunc main() {\n    \u002F\u002F Initialize a new Fiber app\n    app := fiber.New()\n\n    \u002F\u002F Define a route for the GET method on the root path '\u002F'\n    app.Get(\"\u002F\", func(c fiber.Ctx) error {\n        \u002F\u002F Send a string response to the client\n        return c.SendString(\"Hello, World 👋!\")\n    })\n\n    \u002F\u002F Start the server on port 3000\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\nThis simple server is easy to set up and run. It introduces the core concepts of Fiber: app initialization, route definition, and starting the server. Just run this Go program, and visit `http:\u002F\u002Flocalhost:3000` in your browser to see the message.\n\n## Zero Allocation\n\nFiber is optimized for **high-performance**, meaning values returned from **fiber.Ctx** are **not** immutable by default and **will** be re-used across requests. As a rule of thumb, you **must** only use context values within the handler and **must not** keep any references. Once you return from the handler, any values obtained from the context will be re-used in future requests. Visit our [documentation](https:\u002F\u002Fdocs.gofiber.io\u002F#zero-allocation) to learn more.\n\n## 🤖 Benchmarks\n\nThese tests are performed by [TechEmpower](https:\u002F\u002Fwww.techempower.com\u002Fbenchmarks\u002F#section=data-r19&hw=ph&test=plaintext). If you want to see all the results, please visit our [Wiki](https:\u002F\u002Fdocs.gofiber.io\u002Fextra\u002Fbenchmarks).\n\n\u003Cp float=\"left\" align=\"middle\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fgofiber\u002Fdocs\u002Fmaster\u002Fstatic\u002Fimg\u002Fv3\u002Fplaintext.png\" width=\"49%\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fgofiber\u002Fdocs\u002Fmaster\u002Fstatic\u002Fimg\u002Fv3\u002Fjson.png\" width=\"49%\">\n\u003C\u002Fp>\n\n## 🎯 Features\n\n- Robust [Routing](https:\u002F\u002Fdocs.gofiber.io\u002Fguide\u002Frouting)\n- Serve [Static Files](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fapp#static)\n- Extreme [Performance](https:\u002F\u002Fdocs.gofiber.io\u002Fextra\u002Fbenchmarks)\n- [Low Memory](https:\u002F\u002Fdocs.gofiber.io\u002Fextra\u002Fbenchmarks) footprint\n- [API Endpoints](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fctx)\n- [Middleware](https:\u002F\u002Fdocs.gofiber.io\u002Fcategory\u002F-middleware) & [Next](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fctx#next) support\n- [Rapid](https:\u002F\u002Fdev.to\u002Fkoddr\u002Fwelcome-to-fiber-an-express-js-styled-fastest-web-framework-written-with-on-golang-497) server-side programming\n- [Template Engines](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ftemplate)\n- [WebSocket Support](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Fcontrib\u002Ftree\u002Fmain\u002Fwebsocket)\n- [Socket.io Support](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Fcontrib\u002Ftree\u002Fmain\u002Fsocketio)\n- [Server-Sent Events](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Frecipes\u002Ftree\u002Fmaster\u002Fsse)\n- [Rate Limiter](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fmiddleware\u002Flimiter)\n- And much more, [explore Fiber](https:\u002F\u002Fdocs.gofiber.io\u002F)\n\n## 💡 Philosophy\n\nNew gophers that make the switch from [Node.js](https:\u002F\u002Fnodejs.org\u002Fen\u002Fabout\u002F) to [Go](https:\u002F\u002Fgo.dev\u002Fdoc\u002F) are dealing with a learning curve before they can start building their web applications or microservices. Fiber, as a **web framework**, was created with the idea of **minimalism** and follows the **UNIX way**, so that new gophers can quickly enter the world of Go with a warm and trusted welcome.\n\nFiber is **inspired** by Express, the most popular web framework on the Internet. We combined the **ease** of Express and **raw performance** of Go. If you have ever implemented a web application in Node.js (_using Express or similar_), then many methods and principles will seem **very common** to you.\n\nWe **listen** to our users in [issues](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Fissues), Discord [channel](https:\u002F\u002Fgofiber.io\u002Fdiscord) _and all over the Internet_ to create a **fast**, **flexible** and **friendly** Go web framework for **any** task, **deadline** and developer **skill**! Just like Express does in the JavaScript world.\n\n## ⚠️ Limitations\n\n- Due to Fiber's usage of unsafe, the library may not always be compatible with the latest Go version. Fiber v3 has been tested with Go version 1.25 or higher.\n- Fiber automatically adapts common `net\u002Fhttp` handler shapes when you register them on the router, and you can still use the [adaptor middleware](https:\u002F\u002Fdocs.gofiber.io\u002Fnext\u002Fmiddleware\u002Fadaptor\u002F) when you need to bridge entire apps or `net\u002Fhttp` middleware.\n\n### net\u002Fhttp compatibility\n\nFiber can run side by side with the standard library. The router accepts existing `net\u002Fhttp` handlers directly and even works with native `fasthttp.RequestHandler` callbacks, so you can plug in legacy endpoints without wrapping them manually:\n\n```go\npackage main\n\nimport (\n    \"log\"\n    \"net\u002Fhttp\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n)\n\nfunc main() {\n    httpHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n        if _, err := w.Write([]byte(\"served by net\u002Fhttp\")); err != nil {\n            panic(err)\n        }\n    })\n\n    app := fiber.New()\n    app.Get(\"\u002F\", httpHandler)\n\n    \u002F\u002F Start the server on port 3000\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\nWhen you need to convert entire applications or re-use `net\u002Fhttp` middleware chains, rely on the [adaptor middleware](https:\u002F\u002Fdocs.gofiber.io\u002Fnext\u002Fmiddleware\u002Fadaptor\u002F). It converts handlers and middlewares in both directions and even lets you mount a Fiber app in a `net\u002Fhttp` server.\n\n### Express-style handlers\n\nFiber also adapts Express-style callbacks that operate on the lightweight `fiber.Req` and `fiber.Res` helper interfaces. This lets you port middleware and route handlers from Express-inspired codebases while keeping Fiber's router features:\n\n```go\n\u002F\u002F Request\u002Fresponse handlers (2-argument)\napp.Get(\"\u002F\", func(req fiber.Req, res fiber.Res) error {\n    return res.SendString(\"Hello from Express-style handlers!\")\n})\n\n\u002F\u002F Middleware with an error-returning next callback (3-argument)\napp.Use(func(req fiber.Req, res fiber.Res, next func() error) error {\n    if req.IP() == \"192.168.1.254\" {\n        return res.SendStatus(fiber.StatusForbidden)\n    }\n    return next()\n})\n\n\u002F\u002F Middleware with a no-arg next callback (3-argument)\napp.Use(func(req fiber.Req, res fiber.Res, next func()) {\n    if req.Get(\"X-Skip\") == \"true\" {\n        return \u002F\u002F stop the chain without calling next\n    }\n    next()\n})\n```\n\n> **Note:** Adapted `net\u002Fhttp` handlers continue to operate with the standard-library semantics. They don't get access to `fiber.Ctx` features and incur the overhead of the compatibility layer, so native `fiber.Handler` callbacks still provide the best performance.\n\n## 👀 Examples\n\nListed below are some of the common examples. If you want to see more code examples, please visit our [Recipes repository](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Frecipes) or visit our hosted [API documentation](https:\u002F\u002Fdocs.gofiber.io).\n\n### 📖 [**Basic Routing**](https:\u002F\u002Fdocs.gofiber.io\u002F#basic-routing)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"fmt\"\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F GET \u002Fapi\u002Fregister\n    app.Get(\"\u002Fapi\u002F*\", func(c fiber.Ctx) error {\n        msg := fmt.Sprintf(\"✋ %s\", c.Params(\"*\"))\n        return c.SendString(msg) \u002F\u002F => ✋ register\n    })\n\n    \u002F\u002F GET \u002Fflights\u002FLAX-SFO\n    app.Get(\"\u002Fflights\u002F:from-:to\", func(c fiber.Ctx) error {\n        msg := fmt.Sprintf(\"💸 From: %s, To: %s\", c.Params(\"from\"), c.Params(\"to\"))\n        return c.SendString(msg) \u002F\u002F => 💸 From: LAX, To: SFO\n    })\n\n    \u002F\u002F GET \u002Fdictionary.txt\n    app.Get(\"\u002F:file.:ext\", func(c fiber.Ctx) error {\n        msg := fmt.Sprintf(\"📃 %s.%s\", c.Params(\"file\"), c.Params(\"ext\"))\n        return c.SendString(msg) \u002F\u002F => 📃 dictionary.txt\n    })\n\n    \u002F\u002F GET \u002Fjohn\u002F75\n    app.Get(\"\u002F:name\u002F:age\u002F:gender?\", func(c fiber.Ctx) error {\n        msg := fmt.Sprintf(\"👴 %s is %s years old\", c.Params(\"name\"), c.Params(\"age\"))\n        return c.SendString(msg) \u002F\u002F => 👴 john is 75 years old\n    })\n\n    \u002F\u002F GET \u002Fjohn\n    app.Get(\"\u002F:name\", func(c fiber.Ctx) error {\n        msg := fmt.Sprintf(\"Hello, %s 👋!\", c.Params(\"name\"))\n        return c.SendString(msg) \u002F\u002F => Hello john 👋!\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n#### 📖 [**Route Naming**](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fapp#name)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"encoding\u002Fjson\"\n    \"fmt\"\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    app.Get(\"\u002Fapi\u002F*\", func(c fiber.Ctx) error {\n        msg := fmt.Sprintf(\"✋ %s\", c.Params(\"*\"))\n        return c.SendString(msg) \u002F\u002F => ✋ register\n    }).Name(\"api\")\n\n    route := app.GetRoute(\"api\")\n\n    data, _ := json.MarshalIndent(route, \"\", \"  \")\n    fmt.Println(string(data))\n    \u002F\u002F Prints:\n    \u002F\u002F {\n    \u002F\u002F    \"method\": \"GET\",\n    \u002F\u002F    \"name\": \"api\",\n    \u002F\u002F    \"path\": \"\u002Fapi\u002F*\",\n    \u002F\u002F    \"params\": [\n    \u002F\u002F      \"*1\"\n    \u002F\u002F    ]\n    \u002F\u002F }\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n#### 📖 [**Serving Static Files**](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fapp#static)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\u002Fmiddleware\u002Fstatic\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F Serve static files from the \".\u002Fpublic\" directory\n    app.Get(\"\u002F*\", static.New(\".\u002Fpublic\"))\n    \u002F\u002F => http:\u002F\u002Flocalhost:3000\u002Fjs\u002Fscript.js\n    \u002F\u002F => http:\u002F\u002Flocalhost:3000\u002Fcss\u002Fstyle.css\n\n    app.Get(\"\u002Fprefix*\", static.New(\".\u002Fpublic\"))\n    \u002F\u002F => http:\u002F\u002Flocalhost:3000\u002Fprefix\u002Fjs\u002Fscript.js\n    \u002F\u002F => http:\u002F\u002Flocalhost:3000\u002Fprefix\u002Fcss\u002Fstyle.css\n\n    \u002F\u002F Serve a single file for any unmatched routes\n    app.Get(\"*\", static.New(\".\u002Fpublic\u002Findex.html\"))\n    \u002F\u002F => http:\u002F\u002Flocalhost:3000\u002Fany\u002Fpath\u002Fshows\u002Findex.html\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n#### 📖 [**Middleware & Next**](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fctx#next)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"fmt\"\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F Middleware that matches any route\n    app.Use(func(c fiber.Ctx) error {\n        fmt.Println(\"🥇 First handler\")\n        return c.Next()\n    })\n\n    \u002F\u002F Middleware that matches all routes starting with \u002Fapi\n    app.Use(\"\u002Fapi\", func(c fiber.Ctx) error {\n        fmt.Println(\"🥈 Second handler\")\n        return c.Next()\n    })\n\n    \u002F\u002F GET \u002Fapi\u002Flist\n    app.Get(\"\u002Fapi\u002Flist\", func(c fiber.Ctx) error {\n        fmt.Println(\"🥉 Last handler\")\n        return c.SendString(\"Hello, World 👋!\")\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n\u003Cdetails>\n  \u003Csummary>📚 Show more code examples\u003C\u002Fsummary>\n\n### Views Engines\n\n📖 [Config](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Ffiber#config)\n📖 [Engines](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ftemplate)\n📖 [Render](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fctx#render)\n\nFiber defaults to the [html\u002Ftemplate](https:\u002F\u002Fpkg.go.dev\u002Fhtml\u002Ftemplate\u002F) when no view engine is set.\n\nIf you want to execute partials or use a different engine like [amber](https:\u002F\u002Fgithub.com\u002Feknkc\u002Famber), [handlebars](https:\u002F\u002Fgithub.com\u002Faymerick\u002Fraymond), [mustache](https:\u002F\u002Fgithub.com\u002Fcbroglie\u002Fmustache), or [pug](https:\u002F\u002Fgithub.com\u002FJoker\u002Fjade), etc., check out our [Template](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ftemplate) package that supports multiple view engines.\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n    \"github.com\u002Fgofiber\u002Ftemplate\u002Fpug\"\n)\n\nfunc main() {\n    \u002F\u002F Initialize a new Fiber app with Pug template engine\n    app := fiber.New(fiber.Config{\n        Views: pug.New(\".\u002Fviews\", \".pug\"),\n    })\n\n    \u002F\u002F Define a route that renders the \"home.pug\" template\n    app.Get(\"\u002F\", func(c fiber.Ctx) error {\n        return c.Render(\"home\", fiber.Map{\n            \"title\": \"Homepage\",\n            \"year\":  1999,\n        })\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n### Grouping Routes into Chains\n\n📖 [Group](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fapp#group)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n)\n\nfunc middleware(c fiber.Ctx) error {\n    log.Println(\"Middleware executed\")\n    return c.Next()\n}\n\nfunc handler(c fiber.Ctx) error {\n    return c.SendString(\"Handler response\")\n}\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F Root API group with middleware\n    api := app.Group(\"\u002Fapi\", middleware) \u002F\u002F \u002Fapi\n\n    \u002F\u002F API v1 routes\n    v1 := api.Group(\"\u002Fv1\", middleware) \u002F\u002F \u002Fapi\u002Fv1\n    v1.Get(\"\u002Flist\", handler)           \u002F\u002F \u002Fapi\u002Fv1\u002Flist\n    v1.Get(\"\u002Fuser\", handler)           \u002F\u002F \u002Fapi\u002Fv1\u002Fuser\n\n    \u002F\u002F API v2 routes\n    v2 := api.Group(\"\u002Fv2\", middleware) \u002F\u002F \u002Fapi\u002Fv2\n    v2.Get(\"\u002Flist\", handler)           \u002F\u002F \u002Fapi\u002Fv2\u002Flist\n    v2.Get(\"\u002Fuser\", handler)           \u002F\u002F \u002Fapi\u002Fv2\u002Fuser\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n### Middleware Logger\n\n📖 [Logger](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fmiddleware\u002Flogger)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\u002Fmiddleware\u002Flogger\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F Use Logger middleware\n    app.Use(logger.New())\n\n    \u002F\u002F Define routes\n    app.Get(\"\u002F\", func(c fiber.Ctx) error {\n        return c.SendString(\"Hello, Logger!\")\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n### Cross-Origin Resource Sharing (CORS)\n\n📖 [CORS](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fmiddleware\u002Fcors)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\u002Fmiddleware\u002Fcors\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F Use CORS middleware with default settings\n    app.Use(cors.New())\n\n    \u002F\u002F Define routes\n    app.Get(\"\u002F\", func(c fiber.Ctx) error {\n        return c.SendString(\"CORS enabled!\")\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\nCheck CORS by passing any domain in `Origin` header:\n\n```bash\ncurl -H \"Origin: http:\u002F\u002Fexample.com\" --verbose http:\u002F\u002Flocalhost:3000\n```\n\n### Custom 404 Response\n\n📖 [HTTP Methods](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fctx#status)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F Define routes\n    app.Get(\"\u002F\", static.New(\".\u002Fpublic\"))\n\n    app.Get(\"\u002Fdemo\", func(c fiber.Ctx) error {\n        return c.SendString(\"This is a demo page!\")\n    })\n\n    app.Post(\"\u002Fregister\", func(c fiber.Ctx) error {\n        return c.SendString(\"Registration successful!\")\n    })\n\n    \u002F\u002F Middleware to handle 404 Not Found\n    app.Use(func(c fiber.Ctx) error {\n        return c.SendStatus(fiber.StatusNotFound) \u002F\u002F => 404 \"Not Found\"\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n### JSON Response\n\n📖 [JSON](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fctx#json)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n)\n\ntype User struct {\n    Name string `json:\"name\"`\n    Age  int    `json:\"age\"`\n}\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F Route that returns a JSON object\n    app.Get(\"\u002Fuser\", func(c fiber.Ctx) error {\n        return c.JSON(&User{\"John\", 20})\n        \u002F\u002F => {\"name\":\"John\", \"age\":20}\n    })\n\n    \u002F\u002F Route that returns a JSON map\n    app.Get(\"\u002Fjson\", func(c fiber.Ctx) error {\n        return c.JSON(fiber.Map{\n            \"success\": true,\n            \"message\": \"Hi John!\",\n        })\n        \u002F\u002F => {\"success\":true, \"message\":\"Hi John!\"}\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n### WebSocket Upgrade\n\n📖 [Websocket](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Fwebsocket)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\u002Fmiddleware\u002Fwebsocket\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F WebSocket route\n    app.Get(\"\u002Fws\", websocket.New(func(c *websocket.Conn) {\n        defer c.Close()\n        for {\n            \u002F\u002F Read message from client\n            mt, msg, err := c.ReadMessage()\n            if err != nil {\n                log.Println(\"read:\", err)\n                break\n            }\n            log.Printf(\"recv: %s\", msg)\n\n            \u002F\u002F Write message back to client\n            err = c.WriteMessage(mt, msg)\n            if err != nil {\n                log.Println(\"write:\", err)\n                break\n            }\n        }\n    }))\n\n    log.Fatal(app.Listen(\":3000\"))\n    \u002F\u002F Connect via WebSocket at ws:\u002F\u002Flocalhost:3000\u002Fws\n}\n```\n\n### Server-Sent Events\n\n📖 [More Info](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FServer-sent_events\u002FUsing_server-sent_events)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"bufio\"\n    \"fmt\"\n    \"log\"\n    \"time\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n    \"github.com\u002Fvalyala\u002Ffasthttp\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F Server-Sent Events route\n    app.Get(\"\u002Fsse\", func(c fiber.Ctx) error {\n        c.Set(\"Content-Type\", \"text\u002Fevent-stream\")\n        c.Set(\"Cache-Control\", \"no-cache\")\n        c.Set(\"Connection\", \"keep-alive\")\n        c.Set(\"Transfer-Encoding\", \"chunked\")\n\n        c.Context().SetBodyStreamWriter(func(w *bufio.Writer) {\n            var i int\n            for {\n                i++\n                msg := fmt.Sprintf(\"%d - the time is %v\", i, time.Now())\n                fmt.Fprintf(w, \"data: Message: %s\\n\\n\", msg)\n                fmt.Println(msg)\n\n                w.Flush()\n                time.Sleep(5 * time.Second)\n            }\n        })\n\n        return nil\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n### Recover Middleware\n\n📖 [Recover](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Fmiddleware\u002Frecover)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\u002Fmiddleware\u002Frecover\"\n)\n\nfunc main() {\n    app := fiber.New()\n\n    \u002F\u002F Use Recover middleware to handle panics gracefully\n    app.Use(recover.New())\n\n    \u002F\u002F Route that intentionally panics\n    app.Get(\"\u002F\", func(c fiber.Ctx) error {\n        panic(\"normally this would crash your app\")\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n### Using Trusted Proxy\n\n📖 [Config](https:\u002F\u002Fdocs.gofiber.io\u002Fapi\u002Ffiber#config)\n\n```go title=\"Example\"\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com\u002Fgofiber\u002Ffiber\u002Fv3\"\n)\n\nfunc main() {\n    app := fiber.New(fiber.Config{\n        \u002F\u002F Configure trusted proxies - WARNING: Only trust proxies you control\n        \u002F\u002F Using TrustProxy: true with unrestricted IPs can lead to IP spoofing\n        TrustProxy: true,\n        TrustProxyConfig: fiber.TrustProxyConfig{\n            Proxies: []string{\"10.0.0.0\u002F8\", \"172.16.0.0\u002F12\"}, \u002F\u002F Example: Internal network ranges only\n        },\n        ProxyHeader: fiber.HeaderXForwardedFor,\n    })\n\n    \u002F\u002F Define routes\n    app.Get(\"\u002F\", func(c fiber.Ctx) error {\n        return c.SendString(\"Trusted Proxy Configured!\")\n    })\n\n    log.Fatal(app.Listen(\":3000\"))\n}\n```\n\n\u003C\u002Fdetails>\n\n## 🧬 Internal Middleware\n\nHere is a list of middleware that are included within the Fiber framework.\n\n| Middleware                                                                           | Description                                                                                                                                                             |\n|--------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [adaptor](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fadaptor)             | Converter for net\u002Fhttp handlers to\u002Ffrom Fiber request handlers.                                                                                                         |\n| [basicauth](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fbasicauth)         | Provides HTTP basic authentication. It calls the next handler for valid credentials and 401 Unauthorized for missing or invalid credentials.                            |\n| [cache](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fcache)                 | Intercept and cache HTTP responses.                                                                                                                                     |\n| [compress](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fcompress)           | Compression middleware for Fiber, with support for `deflate`, `gzip`, `brotli` and `zstd`.                                                                             |\n| [cors](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fcors)                   | Enable cross-origin resource sharing (CORS) with various options.                                                                                                       |\n| [csrf](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fcsrf)                   | Protect from CSRF exploits.                                                                                                                                             |\n| [earlydata](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fearlydata)         | Adds support for TLS 1.3's early data (\"0-RTT\") feature.                                                                                                                |\n| [encryptcookie](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fencryptcookie) | Encrypt middleware which encrypts cookie values.                                                                                                                        |\n| [envvar](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fenvvar)               | Expose environment variables with providing an optional config.                                                                                                         |\n| [etag](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fetag)                   | Allows for caches to be more efficient and save bandwidth, as a web server does not need to resend a full response if the content has not changed.                      |\n| [expvar](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fexpvar)               | Serves via its HTTP server runtime exposed variables in the JSON format.                                                                                                 |\n| [favicon](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Ffavicon)             | Ignore favicon from logs or serve from memory if a file path is provided.                                                                                               |\n| [healthcheck](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fhealthcheck)     | Liveness and Readiness probes for Fiber.                                                                                                                                |\n| [helmet](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fhelmet)               | Helps secure your apps by setting various HTTP headers.                                                                                                                 |\n| [idempotency](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fidempotency)     | Allows for fault-tolerant APIs where duplicate requests do not erroneously cause the same action performed multiple times on the server-side.                           |\n| [keyauth](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fkeyauth)             | Adds support for key based authentication.                                                                                                                              |\n| [limiter](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Flimiter)             | Adds Rate-limiting support to Fiber. Use to limit repeated requests to public APIs and\u002For endpoints such as password reset.                                             |\n| [logger](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Flogger)               | HTTP request\u002Fresponse logger.                                                                                                                                           |\n| [paginate](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fpaginate)           | Extracts pagination parameters from query strings. Supports page-based, offset-based, and cursor-based pagination with multi-field sorting.                             |\n| [pprof](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fpprof)                 | Serves runtime profiling data in pprof format.                                                                                                                          |\n| [proxy](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fproxy)                 | Allows you to proxy requests to multiple servers.                                                                                                                       |\n| [recover](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Frecover)             | Recovers from panics anywhere in the stack chain and handles the control to the centralized ErrorHandler.                                                               |\n| [redirect](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fredirect)           | Redirect middleware.                                                                                                                                                    |\n| [requestid](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Frequestid)         | Adds a request ID to every request.                                                                                                                                     |\n| [responsetime](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fresponsetime)   | Measures request handling duration and writes it to a configurable response header.                          |\n| [rewrite](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Frewrite)             | Rewrites the URL path based on provided rules. It can be helpful for backward compatibility or just creating cleaner and more descriptive links.                        |\n| [session](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fsession)             | Session middleware. NOTE: This middleware uses our Storage package.                                                                                                     |\n| [skip](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fskip)                   | Skip middleware that skips a wrapped handler if a predicate is true.                                                                                                    |\n| [static](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Fstatic)               | Static middleware for Fiber that serves static files such as **images**, **CSS**, and **JavaScript**.                                                                    |\n| [timeout](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Ftree\u002Fmain\u002Fmiddleware\u002Ftimeout)             | Adds a max time for a request and forwards to ErrorHandler if it is exceeded.                                                                                           |\n\n## 🧬 External Middleware\n\nList of externally hosted middleware modules and maintained by the [Fiber team](https:\u002F\u002Fgithub.com\u002Forgs\u002Fgofiber\u002Fpeople).\n\n| Middleware                                        | Description                                                                                                           |\n| :------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------- |\n| [contrib](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Fcontrib)   | Third-party middlewares                                                                                               |\n| [storage](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Fstorage)   | Premade storage drivers that implement the Storage interface, designed to be used with various Fiber middlewares.     |\n| [template](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ftemplate) | This package contains 9 template engines that can be used with Fiber.      |\n\n## 🕶️ Awesome List\n\nFor more articles, middlewares, examples, or tools, check our [awesome list](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Fawesome-fiber).\n\n## 👍 Contribute\n\nIf you want to say **Thank You** and\u002For support the active development of `Fiber`:\n\n1. Add a [GitHub Star](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Fstargazers) to the project.\n2. Tweet about the project [on your 𝕏 (Twitter)](https:\u002F\u002Fx.com\u002Fintent\u002Ftweet?text=Fiber%20is%20an%20Express%20inspired%20%23web%20%23framework%20built%20on%20top%20of%20Fasthttp%2C%20the%20fastest%20HTTP%20engine%20for%20%23Go.%20Designed%20to%20ease%20things%20up%20for%20%23fast%20development%20with%20zero%20memory%20allocation%20and%20%23performance%20in%20mind%20%F0%9F%9A%80%20https%3A%2F%2Fgithub.com%2Fgofiber%2Ffiber).\n3. Write a review or tutorial on [Medium](https:\u002F\u002Fmedium.com\u002F), [Dev.to](https:\u002F\u002Fdev.to\u002F) or your personal blog.\n4. Support the project by donating a [cup of coffee](https:\u002F\u002Fbuymeacoff.ee\u002Ffenny).\n\n## 💻 Development\n\nTo ensure your contributions are ready for a Pull Request, please use the following `Makefile` commands. These tools help maintain code quality and consistency.\n\n- **make help**: Display available commands.\n- **make audit**: Conduct quality checks.\n- **make benchmark**: Benchmark code performance.\n- **make coverage**: Generate test coverage report.\n- **make format**: Automatically format code.\n- **make lint**: Run lint checks.\n- **make test**: Execute all tests.\n- **make tidy**: Tidy dependencies.\n\nRun these commands to ensure your code adheres to project standards and best practices.\n\n## ☕ Supporters\n\nFiber is an open-source project that runs on donations to pay the bills, e.g., our domain name, GitBook, Netlify, and serverless hosting. If you want to support Fiber, you can ☕ [**buy a coffee here**](https:\u002F\u002Fbuymeacoff.ee\u002Ffenny).\n\n|                                                            | User                                             | Donation |\n| ---------------------------------------------------------- | ------------------------------------------------ | -------- |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F204341?s=25)   | [@destari](https:\u002F\u002Fgithub.com\u002Fdestari)           | ☕ x 10   |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F63164982?s=25) | [@dembygenesis](https:\u002F\u002Fgithub.com\u002Fdembygenesis) | ☕ x 5    |\n| \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F56607882?s=25\" alt=\"thomasvvugt\" style=\"width: 25px; height: 25px;\"> | [@thomasvvugt](https:\u002F\u002Fgithub.com\u002Fthomasvvugt)   | ☕ x 5    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F27820675?s=25) | [@hendratommy](https:\u002F\u002Fgithub.com\u002Fhendratommy)   | ☕ x 5    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1094221?s=25)  | [@ekaputra07](https:\u002F\u002Fgithub.com\u002Fekaputra07)     | ☕ x 5    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F194590?s=25)   | [@jorgefuertes](https:\u002F\u002Fgithub.com\u002Fjorgefuertes) | ☕ x 5    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F186637?s=25)   | [@candidosales](https:\u002F\u002Fgithub.com\u002Fcandidosales) | ☕ x 5    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F29659953?s=25) | [@l0nax](https:\u002F\u002Fgithub.com\u002Fl0nax)               | ☕ x 3    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F635852?s=25)   | [@bihe](https:\u002F\u002Fgithub.com\u002Fbihe)                 | ☕ x 3    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F307334?s=25)   | [@justdave](https:\u002F\u002Fgithub.com\u002Fjustdave)         | ☕ x 3    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11155743?s=25) | [@koddr](https:\u002F\u002Fgithub.com\u002Fkoddr)               | ☕ x 1    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F29042462?s=25) | [@lapolinar](https:\u002F\u002Fgithub.com\u002Flapolinar)       | ☕ x 1    |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2978730?s=25)  | [@diegowifi](https:\u002F\u002Fgithub.com\u002Fdiegowifi)       | ☕ x 1   |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F44171355?s=25) | [@ssimk0](https:\u002F\u002Fgithub.com\u002Fssimk0)             | ☕ x 1   |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5638101?s=25)  | [@raymayemir](https:\u002F\u002Fgithub.com\u002Fraymayemir)     | ☕ x 1   |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F619996?s=25)   | [@melkorm](https:\u002F\u002Fgithub.com\u002Fmelkorm)           | ☕ x 1   |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F31022056?s=25) | [@marvinjwendt](https:\u002F\u002Fgithub.com\u002Fmarvinjwendt) | ☕ x 1   |\n| ![](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F31921460?s=25) | [@toishy](https:\u002F\u002Fgithub.com\u002Ftoishy)             | ☕ x 1   |\n\n## 💻 Code Contributors\n\n\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Ffiber\u002Fcontributors.svg?width=890&button=false\" alt=\"Code Contributors\" style=\"max-width:100%;\">\n\n## ⭐️ Stargazers\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=gofiber\u002Ffiber&type=Date&theme=dark\" \u002F>\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=gofiber\u002Ffiber&type=Date\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=gofiber\u002Ffiber&type=Date\" \u002F>\n\u003C\u002Fpicture>\n\n## 🧾 License\n\nCopyright (c) 2019-present [Fenny](https:\u002F\u002Fgithub.com\u002Ffenny) and [Contributors](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Fgraphs\u002Fcontributors). `Fiber` is free and open-source software licensed under the [MIT License](https:\u002F\u002Fgithub.com\u002Fgofiber\u002Ffiber\u002Fblob\u002Fmain\u002FLICENSE). Official logo was created by [Vic Shóstak](https:\u002F\u002Fgithub.com\u002Fkoddr) and distributed under [Creative Commons](https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-sa\u002F4.0\u002F) license (CC BY-SA 4.0 International).\n","Fiber 是一个受 Express 启发的 Go 语言 Web 框架，基于 Fasthttp 构建，旨在提供高性能和快速开发体验。其核心功能包括零内存分配、高并发处理能力和简洁易用的 API 设计，支持 RESTful 风格的应用开发。此外，Fiber 还具有灵活的中间件系统和友好的错误处理机制，使得开发者能够轻松构建高效且可维护的 Web 应用程序。适用于需要高性能后端服务的各种场景，如微服务架构、API 服务等。",2,"2026-06-11 02:42:42","top_all"]