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
74 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"
    }
  ]
}