@lightring/express-key-rate-limiter
v1.0.1
Published
An efficient and customizable Express middleware for rate limiting API requests based on app keys. This library enables differential rate limiting, offering a higher request limit to users who provide a valid app key, while imposing standard limits on oth
Downloads
2
Readme
express-key-rate-limiter
express-key-rate-limiter
is a Node.js middleware library for Express applications, designed to provide flexible and efficient rate limiting based on app keys. It allows you to define different rate limits for users with a valid app key and those without, enhancing control over how your API resources are consumed.
Features
- Dual Rate Limiting: Set distinct rate limits for users with valid app keys and those without, providing preferential access or enhanced limits to authorized users.
- Customizable Limits: Easily configure time windows and request count limits separately for both user groups.
- App Key Validation: Includes simple yet effective in-memory key validation for quick lookups.
- Easy Integration: Seamlessly integrates with existing Express applications.
- Scalable and Lightweight: Designed with efficiency in mind, ensuring minimal impact on your application's performance.
Installation
Install the library with npm:
npm i @lightring/express-key-rate-limiter
Usage
Import and use the middleware in your Express application:
const express = require("express");
const keyRateLimiter = require("@lightring/express-key-rate-limiter");
const app = express();
app.use(
keyRateLimiter({
validKeys: ["key1", "key2"],
extendedLimit: { windowMs: 15 * 60 * 1000, max: 200 }, // Rate limit for valid app key users
defaultLimit: { windowMs: 15 * 60 * 1000, max: 100 }, // Rate limit for other users
})
);
// ... rest of the Express app setup
app.listen(3000, () => console.log("Server running on port 3000"));
Configuration
The middleware accepts an options object with the following properties:
validKeys
(Array): An array of strings representing valid app keys.extendedLimit
(Object): Configuration object forexpress-rate-limit
, applied to users with a valid app key.defaultLimit
(Object): Configuration object forexpress-rate-limit
, applied to users without a valid app key.
License
Distributed under the MIT License. See LICENSE
for more information.