PrismSlidingWindowMiddleware provides production-grade rate limiting with sliding time windows, customizable keys, and standard X-RateLimit-* response headers.
Build custom rate limit keys from any request data:
Custom Key
let config = PrismRateLimitConfig( windowDuration: .seconds(60), maxRequests: 50, keyExtractor: { request in // Rate limit by user ID from auth request.userInfo["userId"] ?? "anonymous" })await server.use(PrismSlidingWindowMiddleware( config: config, store: PrismMemoryRateLimitStore()))
Use different stores for different middleware instances. Each store tracks its own counters independently.
Authentication
Combine rate limiting with authentication.
Metrics
Monitor rate limit hits in your metrics dashboard.