NAME
Trickster::Middleware::RateLimiter - Rate limiting middleware for Trickster
SYNOPSIS
use Trickster::Middleware::RateLimiter;
# Default: 60 requests per 60 seconds per IP
$app->middleware(Trickster::Middleware::RateLimiter->new);
# Custom limits
$app->middleware(Trickster::Middleware::RateLimiter->new(
requests => 100,
window => 3600, # 1 hour
));
# Custom key generator (e.g., by user ID)
$app->middleware(Trickster::Middleware::RateLimiter->new(
key_generator => sub {
my $env = shift;
return $env->{'trickster.user_id'} || $env->{REMOTE_ADDR};
},
));
DESCRIPTION
Trickster::Middleware::RateLimiter provides rate limiting to protect your application from abuse.
OPTIONS
- requests
-
Number of requests allowed per window. Default: 60
- window
-
Time window in seconds. Default: 60
- storage
-
Hash ref for storing rate limit data. Default: in-memory hash (not suitable for multi-process)
- key_generator
-
Code ref that generates a key from the environment. Default: uses REMOTE_ADDR
- error_handler
-
Code ref that returns the response when rate limit is exceeded.
HEADERS
The middleware adds the following headers to responses: