Skip to content

kasifraza/api-rate-limiter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@kasifraza/api-rate-limiter

npm version License: MIT

Redis-backed rate limiter for NestJS with sliding window and per-user/IP limits.

Installation

npm install @kasifraza/api-rate-limiter ioredis

Usage

Module Registration

import { RateLimitModule } from '@kasifraza/api-rate-limiter';

@Module({
  imports: [
    RateLimitModule.register({
      host: 'localhost',
      port: 6379,
      password: 'optional',
      keyPrefix: 'rl',
    }),
  ],
})
export class AppModule {}

Apply Rate Limiting

import { RateLimit, RateLimitGuard } from '@kasifraza/api-rate-limiter';
import { UseGuards, Controller, Get } from '@nestjs/common';

@Controller('api')
export class ApiController {
  @Get('data')
  @UseGuards(RateLimitGuard)
  @RateLimit({ limit: 100, window: 60 }) // 100 requests per 60 seconds
  getData() {
    return { data: 'ok' };
  }
}

Custom Key

@RateLimit({ limit: 10, window: 60, key: 'user.id' })

Algorithm

Uses a sliding window algorithm with Redis sorted sets (ZADD, ZREMRANGEBYSCORE, ZCARD) for accurate per-window counting.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors