Api Rate Limiting

作者 secondsky88378361314fMIT227 个星标收录于 2026年10月8日更新于 2026年10月8日仓库10天前更新

Implements API rate limiting using token bucket, sliding window, and Redis-based algorithms to protect against abuse. Use when securing public APIs, implementing tiered access, or preventing denial-of-service attacks.

AI 生成的概览

指导使用令牌桶、滑动窗口和基于 Redis 的算法实现 API 限流。

功能
该技能为 API 添加限流提供参考指导,涵盖令牌桶、滑动窗口和固定窗口算法及其优缺点。它包含 Node.js 令牌桶示例代码、Express 中间件配置、标准限流响应头以及分层请求限额。它还列出最佳实践,例如使用 Redis 实现分布式限流,以及返回带 Retry-After 的 429 响应。
适用场景
适用于保护公共 API 免受滥用、按套餐实现分层访问或防止拒绝服务攻击的场景。适合为现有 API 添加请求节流的开发者。
运行要求
不附带脚本,仅为说明文档。应用示例需要 Node.js 环境,可选使用 express-rate-limit 包,分布式限流需要 Redis。

API Rate Limiting

Protect APIs from abuse using rate limiting algorithms with per-user and per-endpoint strategies.

Algorithms

AlgorithmProsCons
Token BucketHandles bursts, smoothMemory per user
Sliding WindowAccurateMemory intensive
Fixed WindowSimpleBoundary spikes

Token Bucket (Node.js)

javascript
class TokenBucket {  constructor(capacity, refillRate) {    this.capacity = capacity;    this.tokens = capacity;    this.refillRate = refillRate; // tokens per second    this.lastRefill = Date.now();  }
  consume() {    this.refill();    if (this.tokens >= 1) {      this.tokens--;      return true;    }    return false;  }
  refill() {    const now = Date.now();    const elapsed = (now - this.lastRefill) / 1000;    this.tokens = Math.min(this.capacity, this.tokens + elapsed * this.refillRate);    this.lastRefill = now;  }}

Express Middleware

javascript
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({  windowMs: 15 * 60 * 1000, // 15 minutes  max: 100,  standardHeaders: true,  message: { error: 'Too many requests, try again later' }});
app.use('/api/', limiter);

Response Headers

X-RateLimit-Limit: 100X-RateLimit-Remaining: 45X-RateLimit-Reset: 1705320000Retry-After: 60

Tiered Limits

TierRequests/Hour
Free100
Pro1,000
Enterprise10,000

Best Practices

  • Use Redis for distributed rate limiting
  • Include proper headers in responses
  • Return 429 status with Retry-After
  • Implement tiered limits for different plans
  • Monitor rate limit metrics
  • Test under load

来源与署名

来源:secondsky/claude-skills位于plugins/api-rate-limiting/skills/api-rate-limiting提交8837836

许可证: MIT

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架