Hız Sınırları
FreeFileTools API hız sınırlarını ve uygulamanızda bunları nasıl ele alacagınızı anlayın.
Ucretsiz Plan Sınırları
| Sınır | Deger |
|---|---|
| Saatlik istek sayısı | 50 |
| Istek basına maksimum dosya boyutu | 25 MB |
| Hız sınırı penceresi | Rolling 1 hour |
Hız sınırı API anahtarı basına uygulanır. Her anahtar, kayan saatlik bazda sıfırlanan kendi bagımsız sayacına sahiptir.
Hız Sınırı Asıldıgında
Hız sınırını astıgınızda, API bir 429 Too Many Requests yanıtı dondurur:
{
"error": "Rate limit exceeded",
"message": "You have exceeded the rate limit of 50 requests per hour. Please try again later.",
"retryAfter": 1742
}retryAfter alanı, baska bir istek gondermeden once beklenecek saniye sayısını belirtir.
Hız Sınırı Yanıt Baslıkları
Her API yanıtı, hız sınırı kullanımınızı takip etmenize yardımcı olacak baslıklar icerir:
| Baslık | Acıklama |
|---|---|
X-RateLimit-Limit | Saatte izin verilen maksimum istek sayısı (50) |
X-RateLimit-Remaining | Mevcut pencerede kalan istek sayısı |
Retry-After | Yeniden denemeden once beklenecek saniye sayısı (yalnızca 429 yanıtlarında) |
Ornek yanıt baslıkları
HTTP/1.1 200 OK
Content-Type: image/jpeg
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 42Sınırlar Icinde Kalma Ipucları
Kalan istekleri kontrol edin
Kac isteginizin kaldıgını ogrenmek icin X-RateLimit-Remaining baslıgını izleyin.
Ustel geri cekilme uygulayın
429 yanıtı aldıgınızda, API'yi bombardıman etmek yerine artan gecikmelerle bekleyip yeniden deneyin.
Sonucları onbellekleyin
Aynı dosyaları tekrar tekrar isliyorsanız, gereksiz API cagrılarından kacınmak icin sonucları yerel olarak onbellekleyin.
Akıllıca gruplayın
Toplu isleme icin isteklerinizi hepsini aynı anda gondermek yerine zamana yayın.
Ornek: JavaScript'te hız sınırlarını yonetme
async function apiCall(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get("Retry-After") || "60");
console.log(`Rate limited. Waiting ${retryAfter} seconds...`);
await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));
continue;
}
return response;
}
throw new Error("Max retries exceeded");
}