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
  • Fiber
  • Installation
  • Zero Allocation
  • Hello, World!
  • Default Routing
  • Static File
  • 참고
  1. Home

Welcome

Previous안녕하세요NextAPI

Last updated 1 year ago


Fiber

Express 로 부터 영감을 받아 Go 를 위해 만들어진 웹 프레임워크 Fiber 를 위한 예제가 포함된 온라인 API 문서입니다. 이를 통해 바로 Fiber 로 웹 앱 개발을 시작할 수 있습니다!

Fiber는 를 위한 가장 빠른 HTTP 엔진인 위에 구축된 로부터 영감을 받은 웹 프레임워크입니다. 빠른 개발을 쉽게 하기 위해 설계되었으며 제로 메모리 할당과 성능을 염두에 두고 있습니다.

이 문서는 2024년 3월 XX일에 출시된 Fiber v3를 위한 것입니다.

Installation

먼저, Go 를 하고 설치하세요. 1.21 이상이 필요합니다.

설치는 명령어를 사용합니다:

go get github.com/gofiber/fiber/v3

Zero Allocation

fiber.Ctx에서 반환되는 일부 값은 기본적으로 변경 불가능하지 않습니다.

fiber 는 고성능을 위해 최적화되어 있기 때문에 fiber.Ctx에서 반환되는 값은 기본적으로 변경 불가능하지 않으며 요청 간에 재사용됩니다. 경험에 의하면, 컨텍스트 값은 핸들러 내에서만 사용해야 하며 참조를 보관하면 안 됩니다. 핸들러에서 반환하는 즉시 컨텍스트에서 얻은 모든 값은 향후 요청에서 재사용되며 발 아래에서 변경됩니다. 다음은 예제입니다:

func handler(c fiber.Ctx) error {
    // 변수는 이 핸들러 내에서만 유효합니다
    result := c.Params("foo") 

    // ...
}
func handler(c fiber.Ctx) error {
    // 변수는 이 핸들러 내에서만 유효합니다 
    result := c.Params("foo")

    // 복사본 만들기
    buffer := make([]byte, len(result))
    copy(buffer, result)
    resultCopy := string(buffer)
    // 이제 변수는 영원히 유효합니다

    // ...
}
app.Get("/:foo", func(c fiber.Ctx) error {
	// 변수는 이제 불변입니다
	result := utils.CopyString(c.Params("foo"))

	// ...
})

또는 Immutable 설정을 사용할 수도 있습니다. 이렇게 하면 컨텍스트에서 반환된 모든 값이 변경 불가능해지므로 어디에서나 유지할 수 있습니다. 물론 이는 성능을 희생하는 대가로 얻어집니다.

app := fiber.New(fiber.Config{
	Immutable: true,  
})

Hello, World!

아래 내장된 코드는 기본적으로 만들 수 있는 가장 간단한 Fiber 앱입니다:

package main

import "github.com/gofiber/fiber/v3"

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

	app.Get("/", func(c fiber.Ctx) error {
		return c.SendString("Hello, World!")
	})

	app.Listen(":3000")  
}
go run server.go

http://localhost:3000으로 이동하면 페이지에 Hello, World!가 표시되어야 합니다.

Default Routing

라우팅은 특정 HTTP 요청 메서드(GET, PUT, POST 등)와 URI(또는 경로)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말합니다.

각 라우트에는 경로가 일치할 때 실행되는 여러 핸들러 함수가 있을 수 있습니다.

라우트 정의는 다음과 같은 구조를 사용합니다:

// Function signature
app.Method(path string, ...func(fiber.Ctx) error)  
  • app은 Fiber의 인스턴스입니다

  • path는 서버의 가상 경로입니다

Simple Route

// 루트 경로 "/"에서 "Hello, World!"로 응답
app.Get("/", func(c fiber.Ctx) error {
	return c.SendString("Hello, World!") 
})

매개변수

// GET http://localhost:8080/hello%20world

app.Get("/:value", func(c fiber.Ctx) error {
	return c.SendString("value: " + c.Params("value"))
	// => Get request with value: hello world  
})

선택적 매개변수

// GET http://localhost:3000/john

app.Get("/:name?", func(c fiber.Ctx) error {
	if c.Params("name") != "" {
		return c.SendString("Hello " + c.Params("name")) 
		// => Hello john
	}
	return c.SendString("Where is john?")
})  

Wild card

// GET http://localhost:3000/api/user/john

app.Get("/api/*", func(c fiber.Ctx) error {
	return c.SendString("API path: " + c.Params("*"))
	// => API path: user/john
})

Static File

이미지, CSS 및 JavaScript 파일과 같은 정적 파일을 제공하려면 함수 핸들러를 파일 또는 디렉터리 문자열로 바꾸세요.

함수 시그니처:

app.Static(prefix, root string, config ...Static)

./public 디렉터리에 있는 파일을 제공하려면 다음 코드를 사용하세요:

app := fiber.New()

app.Static("/", "./public")

app.Listen(":3000")  

이제 ./public 디렉터리에 있는 파일을 로드할 수 있습니다:

http://localhost:3000/hello.html
http://localhost:3000/js/jquery.js  
http://localhost:3000/css/style.css

참고

핸들러 외부에서 해당 값을 유지해야 하는 경우 내장 함수를 사용하여 기본 버퍼의 복사본을 만드세요. 다음은 문자열을 유지하는 예제입니다:

우리는 위의 작업을 수행하고 에서 사용할 수 있는 사용자 정의 CopyString 함수를 만들었습니다.

자세한 내용은 및 를 확인하세요.

Method는 입니다: GET, PUT, POST 등

func(fiber.Ctx) error는 경로가 일치할 때 실행되는 를 포함하는 콜백 함수입니다

Fiber 로 Go 에서 API 를 구축하는 방법에 대한 자세한 내용은 에 관한 이 훌륭한 문서를 확인하세요.

🏠
👋
Go
Fasthttp
Express
다운로드
go get
copy
gofiber/utils
#426
#185
HTTP 요청 메서드
Context
Fiber로 Go에서 Express 스타일 API 구축하기