Designing Scalable API Rate Limiting in Node.js
Explore techniques for implementing effective rate limiting strategies to control API usage in your applications.
0 likes
165 views
Rule Content
{
"title": "Designing Scalable API Rate Limiting in Node.js",
"description": "Implement effective rate limiting strategies to control API usage and ensure application scalability.",
"category": "Node.js Cursor Rules",
"rules": [
{
"pattern": "app\\.use\\(rateLimit\\(\\{[^\\}]*windowMs:\\s*\\d+\\s*\\*\\s*60\\s*\\*\\s*1000[^\\}]*\\}\\)\\);",
"message": "Consider using a distributed store like Redis for rate limiting to ensure scalability across multiple instances.",
"severity": "warning"
},
{
"pattern": "app\\.use\\(rateLimit\\(\\{[^\\}]*max:\\s*\\d+[^\\}]*\\}\\)\\);",
"message": "Ensure that rate limits are set appropriately to balance user experience and system protection.",
"severity": "info"
},
{
"pattern": "app\\.use\\(rateLimit\\(\\{[^\\}]*message:\\s*['\"].*['\"][^\\}]*\\}\\)\\);",
"message": "Provide clear feedback to users when rate limits are exceeded, including HTTP status code 429 and informative messages.",
"severity": "info"
},
{
"pattern": "app\\.use\\(rateLimit\\(\\{[^\\}]*keyGenerator:\\s*\\(req\\)\\s*=>\\s*req\\.ip[^\\}]*\\}\\)\\);",
"message": "Consider implementing dynamic rate limiting based on user roles or subscription levels for enhanced flexibility.",
"severity": "info"
},
{
"pattern": "app\\.use\\(rateLimit\\(\\{[^\\}]*store:\\s*new\\s*RedisStore\\(\\{[^\\}]*client:\\s*redisClient[^\\}]*\\}\\)[^\\}]*\\}\\)\\);",
"message": "Ensure Redis is properly configured and monitored to handle rate limiting effectively in distributed environments.",
"severity": "warning"
}
]
}