📦Fiber


New

이 메서드는 새로운 App 이라는 이름의 인스턴스를 생성합니다. 새로운 인스턴스를 생성할 때 선택적으로 config를 전달할 수 있습니다.

func New(config ...Config) *App
// Default config
app := fiber.New()

// ...

Config

새로운 Fiber 인스턴스를 생성할 때 선택적으로 Config를 전달할 수 있습니다.

// Custom config
app := fiber.New(fiber.Config{
    CaseSensitive: true,
    StrictRouting: true,
    ServerHeader:  "Fiber",
    AppName: "Test App v1.0.1",
})

// ...

Config fields

Property
Type
Description
Default

AppName

string

앱의 이름을 설정할 수 있습니다.

""

BodyLimit

int

요청 본문의 최대 허용 크기를 설정합니다. 크기가 설정된 제한을 초과하면 413 - Request Entity Too Large 응답을 보냅니다.

4 * 1024 * 1024

CaseSensitive

bool

활성화되면 /Foo/foo는 다른 라우트로 취급됩니다. 비활성화되면 /Foo/foo는 같은 것으로 취급됩니다.

false

ColorScheme

사용자 정의 색 구성표를 정의할 수 있습니다. 시작 메시지, 라우트 목록 및 일부 미들웨어에 사용됩니다.

CompressedFileSuffix

string

원본 파일 이름에 접미사를 추가하고 결과 압축 파일을 새 파일 이름으로 저장하려고 시도합니다.

".fiber.gz"

Concurrency

int

최대 동시 연결 수입니다.

256 * 1024

DisableDefaultContentType

bool

true로 설정하면 응답에서 기본 Content-Type 헤더가 제외됩니다.

false

DisableDefaultDate

bool

true로 설정하면 응답에서 기본 날짜 헤더가 제외됩니다.

false

DisableHeaderNormalizing

bool

기본적으로 모든 헤더 이름은 정규화됩니다: conteNT-tYPE -> Content-Type

false

DisableKeepalive

bool

keep-alive 연결을 비활성화하면 서버는 클라이언트에 첫 번째 응답을 보낸 후 들어오는 연결을 닫습니다.

false

DisablePreParseMultipartForm

bool

true로 설정하면 멀티파트 폼 데이터를 사전 분석하지 않습니다. 이 옵션은 멀티파트 폼 데이터를 이진 블롭으로 처리하거나 데이터 분석 시기를 선택하려는 서버에 유용합니다.

false

EnableIPValidation

bool

true로 설정하면 c.IP()c.IPs()는 IP 주소를 반환하기 전에 유효성을 검사합니다. 또한 c.IP()는 쉼표로 구분된 문자열일 수 있는 원시 헤더 값이 아닌 첫 번째 유효한 IP만 반환합니다. 경고: 이 유효성 검사를 수행하는 데는 약간의 성능 비용이 듭니다. 속도가 유일한 관심사이고 애플리케이션이 이 헤더를 이미 검증하는 신뢰할 수 있는 프록시 뒤에 있는 경우 비활성화된 상태로 유지하십시오.

false

EnableSplittingOnParsers

bool

EnableSplittingOnParsers는 true일 때 쿼리/본문/헤더 매개변수를 쉼표로 분할합니다. 예를 들어 /api?foo=bar,baz == foo[]=bar&foo[]=baz와 같이 쿼리 매개변수에서 여러 값을 구문 분석하는 데 사용할 수 있습니다.

false

EnableTrustedProxyCheck

bool

true로 설정하면 fiber는 TrustedProxies 목록을 사용하여 프록시가 신뢰할 수 있는지 확인합니다. 기본적으로 c.Protocol()은 X-Forwarded-Proto, X-Forwarded-Protocol, X-Forwarded-Ssl 또는 X-Url-Scheme 헤더에서 값을 가져오고, c.IP()ProxyHeader 헤더에서 값을 가져오고, c.Hostname()은 X-Forwarded-Host 헤더에서 값을 가져옵니다. EnableTrustedProxyCheck가 true이고 RemoteIPTrustedProxies 목록에 있는 경우 c.Protocol(), c.IP()c.Hostname()EnableTrustedProxyCheck가 비활성화된 경우와 동일한 동작을 합니다. RemoteIP가 목록에 없으면 c.Protocol()은 tls 연결이 앱에 의해 처리되는 경우 https를 반환하고 그렇지 않으면 http를 반환합니다. c.IP()는 fasthttp 컨텍스트에서 RemoteIP()를 반환하고 c.Hostname()fasthttp.Request.URI().Host()를 반환합니다.

false

ErrorHandler

ErrorHandler

ErrorHandler는 fiber.Handler에서 오류가 반환될 때 실행됩니다. 탑재된 fiber 오류 핸들러는 최상위 앱에서 유지되며 접두사와 관련된 요청에 적용됩니다.

DefaultErrorHandler

GETOnly

bool

true로 설정하면 모든 비 GET 요청을 거부합니다. 이 옵션은 GET 요청만 수락하는 서버에 대한 anti-DoS 보호로 유용합니다. GETOnly가 설정되면 요청 크기는 ReadBufferSize로 제한됩니다.

false

IdleTimeout

time.Duration

keep-alive가 활성화된 경우 다음 요청을 기다리는 최대 시간입니다. IdleTimeout이 0이면 ReadTimeout 값이 사용됩니다.

nil

Immutable

bool

활성화되면 컨텍스트 메서드에서 반환된 모든 값은 불변입니다. 기본적으로 핸들러에서 반환할 때까지 유효합니다. #185 이슈를 참조하세요.

false

JSONDecoder

utils.JSONUnmarshal

디코딩에 다른 json 라이브러리를 사용할 수 있는 유연성을 허용합니다.

json.Unmarshal

JSONEncoder

utils.JSONMarshal

인코딩에 다른 json 라이브러리를 사용할 수 있는 유연성을 허용합니다.

json.Marshal

PassLocalsToViews

bool

PassLocalsToViews는 fiber.Ctx에 설정된 로컬을 템플릿 엔진에 전달하는 것을 활성화합니다. 지원되는 엔진은 Template Middleware를 참조하세요.

false

ProxyHeader

string

이렇게 하면 c.IP()가 주어진 헤더 키의 값을 반환할 수 있습니다. 기본적으로 c.IP()는 TCP 연결에서 Remote IP를 반환합니다. 이 속성은 로드 밸런서 뒤에 있는 경우에 유용할 수 있습니다(예: X-Forwarded-*).

ReadBufferSize

ReadTimeout

time.Duration

본문을 포함하여 전체 요청을 읽는 데 허용되는 시간입니다. 기본 시간 제한은 무제한입니다.

nil

ReduceMemoryUsage

bool

true로 설정하면 CPU 사용량이 높아지는 대신 메모리 사용량을 적극적으로 줄입니다.

false

RequestMethods

[]string

RequestMethods는 HTTP 메서드에 대한 사용자 정의 기능을 제공합니다. 원하는 대로 메서드를 추가/제거할 수 있습니다.

DefaultMethods

ServerHeader

string

주어진 값으로 Server HTTP 헤더를 활성화합니다.

""

StreamRequestBody

bool

StreamRequestBody는 요청 본문 스트리밍을 활성화하고 주어진 본문이 현재 제한보다 큰 경우 핸들러를 더 빨리 호출합니다.

false

StrictRouting

bool

활성화되면 라우터는 /foo/foo/를 다르게 취급합니다. 그렇지 않으면 라우터는 /foo/foo/를 동일하게 취급합니다.

false

StructValidator

StructValidator

바인딩할 때 헤더/폼/쿼리 등을 자동으로 검증하려면 struct validator를 정의할 수 있습니다. Fiber에는 기본 validator가 없으므로 validator를 사용하지 않으면 validator 단계를 건너뜁니다.

nil

TrustedProxies

[]string

신뢰할 수 있는 프록시 IP 목록을 포함합니다. EnableTrustedProxyCheck 문서를 참조하십시오. IP 또는 IP 범위 주소를 사용할 수 있습니다.

nil

UnescapePath

bool

컨텍스트의 경로를 설정하기 전에 라우트의 모든 인코딩된 문자를 다시 변환하므로 URL 인코딩된 특수 문자로도 라우팅이 가능합니다.

false

Views

Views

Views는 Render 함수를 감싸는 인터페이스입니다. 지원되는 엔진은 Template Middleware를 참조하세요.

nil

ViewsLayout

string

Views Layout은 Render 함수에서 재정의할 때까지 모든 템플릿 렌더링을 위한 전역 레이아웃입니다. 지원되는 엔진은 Template Middleware를 참조하세요.

""

WriteBufferSize

int

응답 쓰기를 위한 연결당 버퍼 크기입니다.

4096

WriteTimeout

time.Duration

응답 쓰기가 시간 초과되기 전의 최대 기간입니다. 기본 시간 제한은 무제한입니다.

nil

XMLEncoder

utils.XMLMarshal

인코딩에 다른 XML 라이브러리를 사용할 수 있는 유연성을 허용합니다.

xml.Marshal

Server listening

Config

Listen 또는 Listener 메서드를 호출할 때 선택적으로 ListenConfig를 전달할 수 있습니다.

// Custom config
app.Listen(":8080", fiber.ListenConfig{
    EnablePrefork: true,
    DisableStartupMessage: true,
})

Config fields

Property
Type
Description
Default

BeforeServeFunc

func(app *App) error

앱을 제공하기 전에 fiber 앱을 사용자 정의하고 액세스할 수 있습니다.

nil

CertClientFile

string

클라이언트 인증서의 경로입니다. mTLS를 사용하려면 이 필드를 입력해야 합니다.

""

CertFile

string

인증서 파일의 경로입니다. TLS를 사용하려면 이 필드를 입력해야 합니다.

""

CertKeyFile

string

인증서의 개인 키 경로입니다. TLS를 사용하려면 이 필드를 입력해야 합니다.

""

DisableStartupMessage

bool

true로 설정하면 «Fiber» ASCII 아트와 수신 주소가 출력되지 않습니다.

false

EnablePrefork

bool

true로 설정하면 동일한 포트에서 수신하는 여러 Go 프로세스가 생성됩니다.

false

EnablePrintRoutes

bool

true로 설정하면 해당 방법, 경로 및 처리기와 함께 모든 라우트가 인쇄됩니다.

false

GracefulContext

context.Context

주어진 컨텍스트로 Fiber를 우아하게 종료하는 필드입니다.

nil

ListenerAddrFunc

func(addr net.Addr)

net.Listener에 액세스하고 사용자 정의할 수 있습니다.

nil

ListenerNetwork

string

알려진 네트워크는 "tcp", "tcp4"(IPv4 전용), "tcp6"(IPv6 전용)입니다. 경고: 프리포크가 true로 설정된 경우 "tcp4" 및 "tcp6"만 선택할 수 있습니다.

tcp4

OnShutdownError

func(err error)

주어진 신호로 서버를 정상적으로 종료할 때 오류 동작을 사용자 정의할 수 있습니다. log.Fatalf()로 오류를 인쇄합니다.

nil

OnShutdownSuccess

func()

주어진 신호로 서버를 정상적으로 종료할 때 성공 동작을 사용자 정의할 수 있습니다.

nil

TLSConfigFunc

func(tlsConfig *tls.Config)

원하는 대로 tls.Config를 사용자 정의할 수 있습니다.

nil

Listen

Listen은 주어진 주소에서 HTTP 요청을 제공합니다.

func (app *App) Listen(addr string, config ...ListenConfig) error
// Listen on port :8080 
app.Listen(":8080")

// Listen on port :8080 with Prefork 
app.Listen(":8080", fiber.ListenConfig{EnablePrefork: true})

// Custom host
app.Listen("127.0.0.1:8080")

Prefork

Prefork는 동일한 포트에서 수신하는 여러 Go 프로세스를 생성할 수 있는 기능입니다. 이는 여러 CPU 코어에서 확장하는 데 유용할 수 있습니다.

app.Listen(":8080", fiber.ListenConfig{EnablePrefork: true})

이렇게 하면 생성된 프로세스 간에 들어오는 연결이 분산되어 더 많은 요청을 동시에 처리할 수 있습니다.

TLS

TLS는 TLS 인증서 및 키 파일로 certFile 및 keyFile 경로를 사용하여 주어진 주소에서 HTTPs 요청을 제공합니다.

app.Listen(":443", fiber.ListenConfig{CertFile: "./cert.pem", CertKeyFile: "./cert.key"})

TLS with certificate

app.Listen(":443", fiber.ListenConfig{CertClientFile: "./ca-chain-cert.pem"})

TLS with certFile, keyFile and clientCertFile

app.Listen(":443", fiber.ListenConfig{CertFile: "./cert.pem", CertKeyFile: "./cert.key", CertClientFile: "./ca-chain-cert.pem"})

Listener

Listener 메서드를 사용하여 고유한 net.Listener를 전달할 수 있습니다. 이 메서드는 사용자 정의 tls.Config로 TLS/HTTPS를 활성화하는 데 사용할 수 있습니다.

func (app *App) Listener(ln net.Listener, config ...ListenConfig) error
ln, _ := net.Listen("tcp", ":3000")

cer, _:= tls.LoadX509KeyPair("server.crt", "server.key")

ln = tls.NewListener(ln, &tls.Config{Certificates: []tls.Certificate{cer}})

app.Listener(ln)

Server

Server는 기본 fasthttp 서버를 반환합니다.

func (app *App) Server() *fasthttp.Server
func main() {
    app := fiber.New()

    app.Server().MaxConnsPerIP = 1

    // ...
}

Server Shutdown

Shutdown은 활성 연결을 중단하지 않고 서버를 정상적으로 종료합니다. Shutdown은 먼저 모든 열린 리스너를 닫은 다음 모든 연결이 유휴 상태로 돌아갈 때까지 무기한 대기한 후 종료합니다.

ShutdownWithTimeout은 시간 제한이 만료되면 활성 연결을 강제로 닫습니다.

ShutdownWithContext는 컨텍스트의 마감일이 초과되면 강제로 서버를 종료합니다.

func (app *App) Shutdown() error
func (app *App) ShutdownWithTimeout(timeout time.Duration) error
func (app *App) ShutdownWithContext(ctx context.Context) error

Helper functions

NewError

NewError는 선택적 메시지와 함께 새 HTTPError 인스턴스를 생성합니다.

func NewError(code int, message ...string) *Error
app.Get("/", func(c fiber.Ctx) error {
    return fiber.NewError(782, "Custom error message")
})

IsChild

IsChild는 현재 프로세스가 Prefork의 결과인지 확인합니다.

func IsChild() bool
// Config app
app := fiber.New()

app.Get("/", func(c fiber.Ctx) error {
    if !fiber.IsChild() {
        fmt.Println("I'm the parent process")
    } else {
        fmt.Println("I'm a child process")
    }
    return c.SendString("Hello, World!")
})

// ...

// With prefork enabled, the parent process will spawn child processes
app.Listen(":8080", fiber.ListenConfig{EnablePrefork: true})

Last updated