fix: Internal API를 Rate Limiter에서 분리
데디케이트 서버 10개 인스턴스의 하트비트가 apiLimiter(IP당 60req/min)에 걸려 429 에러 발생. Internal API를 별도 그룹으로 분리하여 Rate Limit 제외. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -100,8 +100,16 @@ func Register(
|
|||||||
bossRaid.Post("/entry", brH.RequestEntryAuth)
|
bossRaid.Post("/entry", brH.RequestEntryAuth)
|
||||||
bossRaid.Get("/my-entry-token", brH.GetMyEntryToken)
|
bossRaid.Get("/my-entry-token", brH.GetMyEntryToken)
|
||||||
|
|
||||||
// Internal - Boss Raid (API key auth)
|
// Player Profile (authenticated)
|
||||||
br := api.Group("/internal/bossraid", middleware.ServerAuth)
|
p := api.Group("/player", middleware.Auth)
|
||||||
|
p.Get("/profile", playerH.GetProfile)
|
||||||
|
p.Put("/profile", playerH.UpdateProfile)
|
||||||
|
|
||||||
|
// ── Internal API (Rate Limit 제외, API Key 인증만) ──────────────
|
||||||
|
internalApi := app.Group("/api/internal", apiBodyLimit, middleware.ServerAuth)
|
||||||
|
|
||||||
|
// Internal - Boss Raid
|
||||||
|
br := internalApi.Group("/bossraid")
|
||||||
br.Post("/entry", brH.RequestEntry)
|
br.Post("/entry", brH.RequestEntry)
|
||||||
br.Post("/start", brH.StartRaid)
|
br.Post("/start", brH.StartRaid)
|
||||||
br.Post("/complete", middleware.IdempotencyRequired, brH.CompleteRaid)
|
br.Post("/complete", middleware.IdempotencyRequired, brH.CompleteRaid)
|
||||||
@@ -113,25 +121,20 @@ func Register(
|
|||||||
br.Post("/reset-room", brH.ResetRoom)
|
br.Post("/reset-room", brH.ResetRoom)
|
||||||
br.Get("/server-status", brH.GetServerStatus)
|
br.Get("/server-status", brH.GetServerStatus)
|
||||||
|
|
||||||
// Player Profile (authenticated)
|
// Internal - Auth
|
||||||
p := api.Group("/player", middleware.Auth)
|
internalAuth := internalApi.Group("/auth")
|
||||||
p.Get("/profile", playerH.GetProfile)
|
|
||||||
p.Put("/profile", playerH.UpdateProfile)
|
|
||||||
|
|
||||||
// Internal - Auth (API key auth)
|
|
||||||
internalAuth := api.Group("/internal/auth", middleware.ServerAuth)
|
|
||||||
internalAuth.Post("/verify", authH.VerifyToken)
|
internalAuth.Post("/verify", authH.VerifyToken)
|
||||||
|
|
||||||
// Internal - Player (API key auth)
|
// Internal - Player
|
||||||
internalPlayer := api.Group("/internal/player", middleware.ServerAuth)
|
internalPlayer := internalApi.Group("/player")
|
||||||
internalPlayer.Get("/profile", playerH.InternalGetProfile)
|
internalPlayer.Get("/profile", playerH.InternalGetProfile)
|
||||||
internalPlayer.Post("/save", playerH.InternalSaveGameData)
|
internalPlayer.Post("/save", playerH.InternalSaveGameData)
|
||||||
|
|
||||||
// Internal - Game server endpoints (API key auth, username-based, idempotency-protected)
|
// Internal - Chain
|
||||||
internal := api.Group("/internal/chain", middleware.ServerAuth)
|
internalChain := internalApi.Group("/chain")
|
||||||
internal.Post("/reward", middleware.IdempotencyRequired, chainH.InternalGrantReward)
|
internalChain.Post("/reward", middleware.IdempotencyRequired, chainH.InternalGrantReward)
|
||||||
internal.Post("/mint", middleware.IdempotencyRequired, chainH.InternalMintAsset)
|
internalChain.Post("/mint", middleware.IdempotencyRequired, chainH.InternalMintAsset)
|
||||||
internal.Get("/balance", chainH.InternalGetBalance)
|
internalChain.Get("/balance", chainH.InternalGetBalance)
|
||||||
internal.Get("/assets", chainH.InternalGetAssets)
|
internalChain.Get("/assets", chainH.InternalGetAssets)
|
||||||
internal.Get("/inventory", chainH.InternalGetInventory)
|
internalChain.Get("/inventory", chainH.InternalGetInventory)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user