Tüm Sayfalar / 89 - API Rate Limiting
Sayfa 89 / 161
API Bölümü

API Rate Limiting

İstek sınırlama ve koruma sistemi

Biz Ne Yaptık?

Rate Limiting ile API isteklerini kontrol altına aldık. Sunucu aşırı yüklenmeden korunuyor.

Eski Yöntem

  • Sınırsız istek
  • Sunucu çökmesi riski
  • Adil olmayan kullanım

Modern Mimari

  • 60/dakika: Normal limit
  • Koruma: DDoS önleme
  • Adil: Herkes eşit pay

Kullanıcı Limitleri

Normal Kullanıcı

Standart API kullanımı

60/dk

Premium Kullanıcı

Yoğun kullanım için

120/dk

Arkaplanda Neler Çalışıyor?

Rate limiting kontrolü her API isteğinde şöyle çalışır:

1

Limiter Configuration (Limit Yapılandırması)

RouteServiceProvider'da RateLimiter::for('api', fn($request) => Limit::perMinute(60)->by($request->user()?->id ?: $request->ip())) tanımlanır.

2

Key Generation (Anahtar Oluşturma)

Her kullanıcı/IP için benzersiz key oluşturulur: rate_limit:api:user:123 veya rate_limit:api:ip:192.168.1.1. Bu key Redis'te saklanır.

3

Counter Increment (Sayaç Artırma)

Her istekte Redis INCR komutu ile sayaç artırılır. İlk istekte EXPIRE ile 60 saniyelik TTL ayarlanır. Sliding window algoritması kullanılır.

4

Limit Check (Limit Kontrolü)

Sayaç değeri maxAttempts (60) ile karşılaştırılır. Aşılmamışsa istek devam eder. Aşılmışsa ThrottleRequestsException fırlatılır.

5

Response Headers (Yanıt Başlıkları)

Her yanıta header'lar eklenir: X-RateLimit-Limit: 60, X-RateLimit-Remaining: 45, X-RateLimit-Reset: 1707753600 (Unix timestamp).

6

429 Response (Limit Aşıldı)

Limit aşılınca 429 Too Many Requests döner. Body'de {"message": "Too Many Attempts.", "retry_after": 35} ve Retry-After header'ı bekleme süresini belirtir.

Anahtar Terimler

Rate Limit

Belirli sürede yapılabilecek maksimum istek sayısı.

Trafik ışığı gibi, akışı kontrol eder

429 Too Many Requests

Limit aşıldığında dönen HTTP hata kodu.

Kırmızı ışık gibi, dur bekle der

45 / 60 istek
Kullanılan 75%
İstek Sayacı
Dakikalık Limit
0-40 Güvenli
41-55 Dikkat
56-60 Limit