github gofiber/fiber v2.40.0

latest releases: v3.0.0-beta.3, v2.52.5, v3.0.0-beta.2...
24 months ago

❗ BreakingChange

  • Bump github.com/valyala/fasthttp from 1.40.0 to 1.41.0 (#2171)
  • Deprecate: go 1.14 & go 1.15 support deprecation (#2172)

Due to the fact that fasthttp, which fiber is based on in release 1.41.0, does not support go versions 1.14 & 1.15 anymore, we had to remove them from our package as well.

🚀 New

// now you can add your own custom methods
app := fiber.New(fiber.Config{
    RequestMethods: append(fiber.DefaultMethods, "LOAD", "TEST"),
})

app.Add("LOAD", "/hello", func(c *fiber.Ctx) error {
    return c.SendString("Hello, World 👋!")
})
// declaration of multiple paths for the ".Use" method as in express is now possible
app.Use([]string{"/john", "/doe"}, func(c *Ctx) error {
    return c.SendString(c.Path())
})
app.Get("/:userId<int>?", func(c *fiber.Ctx) error {
    return c.SendString(c.Params("userId"))
})
// curl -X GET http://localhost:3000/42
// 42

// curl -X GET http://localhost:3000/
//
app := fiber.New()
micro := fiber.New()
// order when registering the mounted apps no longer plays a role
app.Mount("/john", micro)
// before there was problem when after mounting routes were registered
micro.Get("/doe", func(c *fiber.Ctx) error {
    return c.SendStatus(fiber.StatusOK)
})
// output of the mount path possible
micro.MountPath()   // "/john"
// In systems where you have multiple ingress endpoints, it is common to add a URL prefix, like so:
app.Use(pprof.New(pprof.Config{Prefix: "/endpoint-prefix"}))
app.Use(logger.New(logger.Config{
    Format: "[${time}] ${status} - ${latency} ${method} ${randomNumber} ${path}\n",
    CustomTags: map[string]logger.LogFunc{
        // possibility to adapt or overwrite existing tags
        logger.TagMethod: func(output logger.Buffer, c *fiber.Ctx, data *logger.Data, extraParam string) (int, error) {
            return output.WriteString(utils.ToLower(c.Method()))
        },
        // own tags can be registered
        "randomNumber": func(output logger.Buffer, c *fiber.Ctx, data *logger.Data, extraParam string) (int, error) {
            return output.WriteString(strconv.FormatInt(rand.Int63n(100), 10))
        },
    },
}))
// [17:15:17] 200 -      0s get 10 /test
// [17:15:17] 200 -      0s get 51 /test
app.Use(logger.New(logger.Config{
    // is triggered when the handlers has been processed
    Done: func(c *fiber.Ctx, logString []byte) {
        // allows saving the logging string to other sources
        if c.Response().StatusCode() != fiber.StatusOK {
            reporter.SendToSlack(logString) 
        }
    },
})) 

🧹 Updates

  • Track Configured Values (#2221)
  • Ctx: simplify Protocol() (#2217)
  • Ctx: make Secure() also report whether a secure connection was established to a trusted proxy (#2215)
  • Ctx: update Locals function to accept interface{} key (#2144)
  • Utils: reduce diff to external utils package (#2206)
  • Utils: Update HTTP status codes (#2203)
  • Utils: Replace UnsafeBytes util with suggested way (#2204)
  • Fix and optimize memory storage (#2207)
  • Leverage runtime/debug to print the full stack trace info (#2183)
  • Ci: add check-latest param in vulncheck.yml (#2197)
  • Ci: replace snyk with govulncheck (#2178)

🐛 Fixes

  • Fix naming of routes inside groups (#2199)

📚 Documentation

  • Update list of third-party library licenses (#2211)
  • Update README_zh-CN.md (#2186)
  • Add korean translate in Installation section (#2213)
  • Comment typo (#2173)
  • Cache readme and docs update (#2169)

Full Changelog: v2.39.0...v2.40.0

Thank you @Skyenought, @calebcase, @efectn, @gandaldf, @gmlewis, @jamestiotio, @leonklingele, @li-jin-gou, @marcmartin13, @panjf2000, @pjebs, @rafimuhammad01 and @thor-son for making this update possible.

Don't miss a new fiber release

NewReleases is sending notifications on new releases.