Limite de rata
Intelege limitele de rata pentru FreeFileTools API si cum sa le gestionezi in aplicatia ta.
Limitele planului gratuit
| Limita | Valoare |
|---|---|
| Cereri pe ora | 50 |
| Dimensiunea maxima a fisierului per cerere | 25 MB |
| Fereastra de limita a ratei | Rolling 1 hour |
Limita de rata se aplica per API Key. Fiecare cheie primeste propriul contor independent care se reseteaza pe baza orei curente.
Cand limitele de rata sunt depasite
Cand depasesti limita de rata, API-ul returneaza un raspuns 429 Too Many Requests:
{
"error": "Rate limit exceeded",
"message": "You have exceeded the rate limit of 50 requests per hour. Please try again later.",
"retryAfter": 1742
}Campul retryAfter indica numarul de secunde de asteptat inainte de a face o alta cerere.
Antete de raspuns pentru limita de rata
Fiecare raspuns API include antete pentru a te ajuta sa urmaresti utilizarea limitei de rata:
| Antet | Descriere |
|---|---|
X-RateLimit-Limit | Numarul maxim de cereri permise pe ora (50) |
X-RateLimit-Remaining | Numarul de cereri ramase in fereastra curenta |
Retry-After | Secunde de asteptat inainte de a reincerca (doar la raspunsurile 429) |
Exemplu de antete de raspuns
HTTP/1.1 200 OK
Content-Type: image/jpeg
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 42Sfaturi pentru a ramane in limite
Verifica cererile ramase
Monitorizeaza antetul X-RateLimit-Remaining pentru a sti cate cereri mai ai.
Implementeaza backoff exponential
Cand primesti un raspuns 429, asteapta si reincearca cu intarzieri crescatoare in loc sa bombardezi API-ul.
Pune rezultatele in cache
Daca procesezi aceleasi fisiere in mod repetat, pune rezultatele in cache local pentru a evita apeluri API inutile.
Grupeaza inteligent
Pentru procesarea in lot, distribuie cererile tale in timp in loc sa le trimiti pe toate deodata.
Exemplu: Gestionarea limitelor de rata in JavaScript
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");
}