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
  • Default Config
  1. Home
  2. API
  3. Middleware

Idempotency

PreviousHelmetNextKeyauth

Last updated 1 year ago


용 Idempotency 미들웨어는 클라이언트 측의 네트워킹 문제로 인한 중복 요청이 서버 측에서 동일한 작업을 여러 번 수행하는 오류를 일으키지 않도록 내결함성 API를 허용합니다.

더 나은 이해를 위해서는 를 참조하세요.

Signatures

func New(config ...Config) fiber.Handler

Examples

Fiber 웹 프레임워크의 일부인 미들웨어 패키지를 가져옵니다.

import (
  "github.com/gofiber/fiber/v2"
  "github.com/gofiber/fiber/v2/middleware/idempotency"
)

Fiber 앱을 초기화한 후에는 다음과 같은 가능성을 사용할 수 있습니다:

Default Config

app.Use(idempotency.New())

Custom Config

app.Use(idempotency.New(idempotency.Config{
  Lifetime: 42 * time.Minute,
  // ...
}))

Config

Property
Type
Description
Default

Next

func(*fiber.Ctx) bool

Next는 true를 반환할 때 이 미들웨어를 건너뛰는 함수를 정의합니다.

safe 메서드를 위한 함수

Lifetime

time.Duration

Lifetime은 idempotency 키의 최대 수명입니다.

30 * time.Minute

KeyHeader

string

KeyHeader는 idempotency 키가 포함된 헤더의 이름입니다.

"X-Idempotency-Key"

KeyHeaderValidate

func(string) error

KeyHeaderValidate는 idempotency 헤더의 구문을 검증하는 함수를 정의합니다.

UUID 검증을 위한 함수

KeepResponseHeaders

[]string

KeepResponseHeaders는 원래 응답에서 유지해야 하는 헤더 목록입니다.

nil (모든 헤더 유지)

Lock

Locker

Lock은 idempotency 키를 잠급니다.

인메모리 로커

Storage

fiber.Storage

Storage는 idempotency 키별로 응답 데이터를 저장합니다.

인메모리 스토리지

Default Config

var ConfigDefault = Config{
  Next: func(c *fiber.Ctx) bool {
    // 안전한 HTTP 메서드를 사용하여 요청이 수행된 경우 미들웨어 건너뛰기
    return fiber.IsMethodSafe(c.Method())
  },
  Lifetime:            30 * time.Minute,
  KeyHeader:           "X-Idempotency-Key",
  KeyHeaderValidate: func(k string) error {
    if l, wl := len(k), 36; l != wl { // UUID 길이는 36자입니다
      return fmt.Errorf("%w: invalid length: %d != %d", ErrInvalidIdempotencyKey, l, wl)
    }
    return nil
  },
  KeepResponseHeaders: nil,
  Lock:                nil, // configDefault에서 설정하므로 여기서 데이터를 할당하지 않습니다.
  Storage:             nil, // configDefault에서 설정하므로 여기서 데이터를 할당하지 않습니다.
}
🏠
📁
🧬
Fiber
https://datatracker.ietf.org/doc/html/draft-ietf-httpapi-idempotency-key-header-02