@k_ankit/rate-limit-middleware
TypeScript icon, indicating that this package has built-in type declarations

1.0.11 • Public • Published

Rate Limit Middleware

Rate Limiting Middleware for Express

Installation

$ npm install --save @k_ankit/rate-limit-middleware

Config

Field Type Default Description
timeFrameInMs Number 10000 Time window in milliseconds
maxHits Number 10 Maximum number of requests allowed within the time window
clientIdentifierHeader String Identifier Header for the client
clientIdentifierExtracter Function Extract custom identifiers for clients
message String Too Many Requests Response body if limit is exceeded
statusCode Number 429 Status Code if limit is exceeded
prefix String Prefix to append to the Client Identifier
store String IN_MEMORY Store to be used to store the data, Allowed: 'IN_MEMORY', 'REDIS'
redisConnectionConfig Object Store Client Config to be used to store the data, Must be provided if REDIS store is used

Note: If clientIdentifierHeader and clientIdentifierExtracter are not provided Ip address is used as client identifier

Usage

Basic Example

The below code uses IN_MEMORY store.

import { createRateLimiter } from '@k_ankit/rate-limit-middleware'
import Express from 'express'

const config = {
  timeFrameInMs: 10000,
  maxHits: 10,
  clientIdentifierHeader: 'x-token'
}

const rateLimiter = await createRateLimiter(config)

const TestRouter = new Express.Router()
TestRouter.get('/test', rateLimiter)

The below code uses REDIS store.

import { createRateLimiter } from '@k_ankit/rate-limit-middleware'
import Express from 'express'

const config = {
  timeFrameInMs: 10000,
  maxHits: 10,
  clientIdentifierHeader: 'x-token',
  store: 'REDIS',
  redisConnectionConfig: {
    host: 'sample.redis.server',
    port: '6379',
    user: 'your_user_here',
    password: 'your_password_here'
  }
}

const rateLimiter = await createRateLimiter(config)

const TestRouter = new Express.Router()
TestRouter.get('/test', rateLimiter)

/@k_ankit/rate-limit-middleware/

    Package Sidebar

    Install

    npm i @k_ankit/rate-limit-middleware

    Weekly Downloads

    1

    Version

    1.0.11

    License

    MIT

    Unpacked Size

    16.8 kB

    Total Files

    17

    Last publish

    Collaborators

    • k_ankit