Go Fiber 한글 공식 문서
  • 🙇‍♀️안녕하세요
  • 🏠Home
    • 👋Welcome
    • 📁API
      • 📦Fiber
      • 🚀App
      • 🧠Ctx
      • 📋Constants
      • 🌎Client
      • 📃Log
      • 🧬Middleware
        • Adaptor
        • BasicAuth
        • Cache
        • Compress
        • CORS
        • CSRF
        • EarlyData
        • Encrypt Cookie
        • EnvVar
        • ETag
        • ExpVar
        • Favicon
        • FileSystem
        • Health Check
        • Helmet
        • Idempotency
        • Keyauth
        • Limiter
        • Logger
        • Monitor
        • Pprof
        • Proxy
        • Recover
        • Redirect
        • RequestID
        • Rewrite
        • Session
        • Skip
        • Timeout
    • 📁Guide
      • 🔌Routing
      • 🎭Grouping
      • 📝Templates
      • 🐛Error Handling
      • 🔎Validation
      • 🎣Hooks
      • ⚡Make Fiber Faster
    • 📁Extra
      • 🤔FAQ
      • 📊Benchmarks
  • 🧩Extra
    • 🧬Contrip
      • 👋Welcome
      • Casbin
      • Fgprof
      • Fiberi18n
      • Fibernewrelic
      • Fibersentry
      • Fiberzap
      • Fiberzerolog
      • JWT
      • LoadShed
      • Opafiber
      • Otelfiber
        • Example
      • Paseto
      • README
      • Swagger
      • Websocket
    • 📦Storage
      • 👋Welcome
      • ArangoDB
      • Azure Blob
      • Badger
      • Bbolt
      • Coherence
      • Couchbase
      • DynamoDB
      • Etcd
      • Memcache
      • Memory
      • Minio
      • MongoDB
      • MSSQL
      • MySQL
      • Nats
      • Pebble
      • Postgres
      • Redis
      • Ristretto
      • Rueidis
      • S3
      • ScyllaDb
      • SQLite3
    • 📃Template
      • 👋Welcome
      • Ace
      • Amber
      • Django
      • Handlebars
      • HTML
        • Golang Templates Cheatsheet
      • Jet
      • Mustache
      • Pug
      • Slim
Powered by GitBook
On this page
  • Signatures
  • Examples
  1. Home
  2. API
  3. Middleware

Adaptor

PreviousMiddlewareNextBasicAuth

Last updated 1 year ago


net/http 핸들러를 Fiber 요청 핸들러로 변환하거나 그 반대로 변환하는 컨버터입니다. 에게 특별한 감사의 말씀을 드립니다!

Signatures

이름
시그니처
설명

HTTPHandler

HTTPHandler(h http.Handler) fiber.Handler

http.Handler -> fiber.Handler

HTTPHandlerFunc

HTTPHandlerFunc(h http.HandlerFunc) fiber.Handler

http.HandlerFunc -> fiber.Handler

HTTPMiddleware

HTTPHandlerFunc(mw func(http.Handler) http.Handler) fiber.Handler

func(http.Handler) http.Handler -> fiber.Handler

FiberHandler

FiberHandler(h fiber.Handler) http.Handler

fiber.Handler -> http.Handler

FiberHandlerFunc

FiberHandlerFunc(h fiber.Handler) http.HandlerFunc

fiber.Handler -> http.HandlerFunc

FiberApp

FiberApp(app *fiber.App) http.HandlerFunc

Fiber 앱 -> http.HandlerFunc

ConvertRequest

ConvertRequest(c fiber.Ctx, forServer bool) (http.Request, error)

fiber.Ctx -> http.Request

CopyContextToFiberContext

CopyContextToFiberContext(context interface{}, requestContext *fasthttp.RequestCtx)

context.Context -> fasthttp.RequestCtx

Examples

net/http에서 Fiber로

package main

import (
  "fmt"
  "net/http"
  "github.com/gofiber/fiber/v2"
  "github.com/gofiber/fiber/v2/middleware/adaptor"
)

func main() {
  // 새로운 Fiber 앱
  app := fiber.New()

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

  // 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 미들웨어를 Fiber로

package main

import (
  "log"
  "net/http"
  "github.com/gofiber/fiber/v2"  
  "github.com/gofiber/fiber/v2/middleware/adaptor"
)

func main() {
  // 새로운 Fiber 앱
  app := fiber.New()

  // http 미들웨어 -> fiber.Handler
  app.Use(adaptor.HTTPMiddleware(logMiddleware))

  // 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 핸들러를 net/http로

package main

import (
  "net/http"
  "github.com/gofiber/fiber/v2"
  "github.com/gofiber/fiber/v2/middleware/adaptor"
)

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

  // 3000번 포트에서 리스닝
  http.ListenAndServe(":3000", nil)
}

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

Fiber 앱을 net/http로

package main

import (
  "net/http"
  "github.com/gofiber/fiber/v2"
  "github.com/gofiber/fiber/v2/middleware/adaptor"  
)

func main() {
  app := fiber.New()
  app.Get("/greet", greet)
  
  // 3000번 포트에서 리스닝
  http.ListenAndServe(":3000", adaptor.FiberApp(app))
}

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

Fiber 컨텍스트를 (net/http).Request로

package main

import (
  "net/http"
  "github.com/gofiber/fiber/v2"
  "github.com/gofiber/fiber/v2/middleware/adaptor"
)

func main() {
  app := fiber.New()
  app.Get("/greet", greetWithHTTPReq)

  // 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())
}
🏠
📁
🧬
@arsmn