Skip to main content
Version: Next

Adaptor

Converter for net/http handlers to/from Fiber request handlers, special thanks to @arsmn!

Signatures

NameSignatureDescription
HTTPHandlerHTTPHandler(h http.Handler) fiber.Handlerhttp.Handler -> fiber.Handler
HTTPHandlerFuncHTTPHandlerFunc(h http.HandlerFunc) fiber.Handlerhttp.HandlerFunc -> fiber.Handler
HTTPMiddlewareHTTPHandlerFunc(mw func(http.Handler) http.Handler) fiber.Handlerfunc(http.Handler) http.Handler -> fiber.Handler
FiberHandlerFiberHandler(h fiber.Handler) http.Handlerfiber.Handler -> http.Handler
FiberHandlerFuncFiberHandlerFunc(h fiber.Handler) http.HandlerFuncfiber.Handler -> http.HandlerFunc
FiberAppFiberApp(app *fiber.App) http.HandlerFuncFiber app -> http.HandlerFunc
ConvertRequestConvertRequest(c fiber.Ctx, forServer bool) (*http.Request, error)fiber.Ctx -> http.Request
CopyContextToFiberContextCopyContextToFiberContext(context any, requestContext *fasthttp.RequestCtx)context.Context -> fasthttp.RequestCtx

Examples

net/http to Fiber

package main

import (
"fmt"
"net/http"

"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/adaptor"
)

func main() {
// New fiber app
app := fiber.New()

// http.Handler -> fiber.Handler
app.Get("/", adaptor.HTTPHandler(handler(greet)))

// http.HandlerFunc -> fiber.Handler
app.Get("/func", adaptor.HTTPHandlerFunc(greet))

// Listen on port 3000
app.Listen(":3000")
}

func handler(f http.HandlerFunc) http.Handler {
return http.HandlerFunc(f)
}

func greet(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello World!")
}

net/http middleware to Fiber

package main

import (
"log"
"net/http"

"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/adaptor"
)

func main() {
// New fiber app
app := fiber.New()

// http middleware -> fiber.Handler
app.Use(adaptor.HTTPMiddleware(logMiddleware))

// Listen on port 3000
app.Listen(":3000")
}

func logMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Println("log middleware")
next.ServeHTTP(w, r)
})
}

Fiber Handler to net/http

package main

import (
"net/http"

"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/adaptor"
)

func main() {
// fiber.Handler -> http.Handler
http.Handle("/", adaptor.FiberHandler(greet))

// fiber.Handler -> http.HandlerFunc
http.HandleFunc("/func", adaptor.FiberHandlerFunc(greet))

// Listen on port 3000
http.ListenAndServe(":3000", nil)
}

func greet(c fiber.Ctx) error {
return c.SendString("Hello World!")
}

Fiber App to net/http

package main

import (
"net/http"

"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/adaptor"
)

func main() {
app := fiber.New()

app.Get("/greet", greet)

// Listen on port 3000
http.ListenAndServe(":3000", adaptor.FiberApp(app))
}

func greet(c fiber.Ctx) error {
return c.SendString("Hello World!")
}

Fiber Context to (net/http).Request

package main

import (
"net/http"

"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/adaptor"
)

func main() {
app := fiber.New()

app.Get("/greet", greetWithHTTPReq)

// Listen on port 3000
http.ListenAndServe(":3000", adaptor.FiberApp(app))
}

func greetWithHTTPReq(c fiber.Ctx) error {
httpReq, err := adaptor.ConvertRequest(c, false)
if err != nil {
return err
}

return c.SendString("Request URL: " + httpReq.URL.String())
}