DocsKérési korlátok

Kereskorlatok

Ertse meg a FreeFileTools API kereskorlatait es hogyan kezelje oket az alkalmazasaban.

Ingyenes szint korlatok

KorlatErtek
Keresek orankent50
Max fajlmeret keresnkent25 MB
Kereskorlat ablakRolling 1 hour

A kereskorlat API Key-enkent ervenyes. Minden kulcs sajat fuggetlen szamlaloval rendelkezik, amely gordulo orandalpon alapul.

Amikor a kereskorlatok tullepesre kerulnek

Amikor tullepi a kerskorlatot, az API 429 Too Many Requests valaszt ad:

json
{
  "error": "Rate limit exceeded",
  "message": "You have exceeded the rate limit of 50 requests per hour. Please try again later.",
  "retryAfter": 1742
}

A retryAfter mezo jelzi a masodpercek szamat, amelyet varni kell a kovetkezo keres elott.

Kereskorlat valaszfejlecek

Minden API-valasz tartalmaz fejleceket, amelyek segitenek nyomon kovetni a kereskorlat hasznalatot:

FejlecLeiras
X-RateLimit-LimitMaximalis megengedett keresek szama orankent (50)
X-RateLimit-RemainingHatralevo keresek szama az aktualis ablakban
Retry-AfterMasodpercek varakozas az ujraprobalkozas elott (csak 429 valaszoknal)

Pelda valaszfejlecekre

http
HTTP/1.1 200 OK
Content-Type: image/jpeg
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 42

Tippek a korlaton belul maradashoz

1.

Ellenorizze a hatralevo kereseket

Figyelje a X-RateLimit-Remaining fejlecet, hogy megtudja, hany keres maradt.

2.

Alkalmazzon exponencialis visszalepest

Amikor 429 valaszt kap, varjon es probaljon ujra novekvo kesleltetessel ahelyett, hogy bombazna az API-t.

3.

Tarolja az eredmenyeket

Ha ugyanazokat a fajlokat dolgozza fel ismetelten, tarolja az eredmenyeket helyben, hogy elkertlje a felesleges API-hivasokat.

4.

Kotegelt kuldjon okosan

Kotegeltt feldolgozasnal oszja el kereseit idoben ahelyett, hogy mindet egyszerre kuldene.

Pelda: Kereskorlatok kezelese JavaScriptben

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");
}