API Keys & Rate Limiting
API Keys, TYPICALLY, THIRD-PARTY INTEGRATIONS/SERVICE-TO-SERVICE COMMUNICATION ke liye, USE HOTE hain (JWT ki TARAH, INDIVIDUAL USERS ke liye NAHI) — EK UNIQUE, LONG, RANDOM STRING, HAR CLIENT APPLICATION ko, ISSUE ki jaati hai, aur, HAR REQUEST mein, HEADER (jaise X-API-Key) mein, PASS ki jaati hai.
Rate Limiting, EK CLIENT ko, EK TIME WINDOW mein (jaise, 100 REQUESTS PER MINUTE), KITNI REQUESTS, KARNE DI JAAYE, YE CONTROL karta hai — SERVER ko, ABUSE/OVERLOAD SE, BACHATA hai. Bucket4j jaisi LIBRARIES, ISE, EASILY, IMPLEMENT karne DETI hain, TOKEN BUCKET ALGORITHM SE.
// API Key validation, filter mein:
@Component
public class ApiKeyFilter extends OncePerRequestFilter {
protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain)
throws ServletException, IOException {
String apiKey = req.getHeader("X-API-Key");
if (apiKey == null || !apiKeyService.isValid(apiKey)) {
res.setStatus(HttpStatus.UNAUTHORIZED.value());
return;
}
chain.doFilter(req, res);
}
}
// Rate limiting response header, COMMON convention:
// X-RateLimit-Limit: 100
// X-RateLimit-Remaining: 42
// X-RateLimit-Reset: 1699999999
// 429 Too Many Requests — LIMIT exceed hone par- API Keys = third-party/service-to-service authentication (individual users ke liye NAHI)
- Rate limiting = server ko, abuse/overload se, protect karta hai
- 429 Too Many Requests = rate limit exceed hone par, CORRECT status code
Fixed WINDOW (jaise, "100 requests, HAR, MINUTE ke, START mein, RESET"), SIMPLE hai, LEKIN, "BURST" ISSUES ho sakte hain (WINDOW BOUNDARY PAR, DOUBLE, LIMIT, EFFECTIVELY, USE ho sakta hai). Sliding WINDOW, ZYAADA, ACCURATE, LEKIN, ZYAADA, COMPLEX, IMPLEMENTATION MANGТА hai.
Global, RATE LIMIT (POORE, SERVER ke liye), SERVER, OVERLOAD SE, BACHATA hai. Per-user, RATE LIMIT (HAR, API KEY/USER ke liye, SEPARATE), FAIR, USAGE, ENSURE karta hai — EK, ABUSIVE, USER, BAAKI, USERS ko, AFFECT NAHI karta.
- Global limit = SERVER-WIDE, overload PROTECTION
- Per-user limit = FAIR usage, EK, USER, DOOSRON ko, AFFECT NAHI karta