DocsΌρια αιτημάτων

Όρια αιτημάτων

Κατανοήστε τα όρια αιτημάτων του FreeFileTools API και πώς να τα διαχειρίζεστε στην εφαρμογή σας.

Όρια δωρεάν πλάνου

ΌριοΤιμή
Αιτήματα ανά ώρα50
Μέγιστο μέγεθος αρχείου ανά αίτημα25 MB
Παράθυρο ορίου αιτημάτωνRolling 1 hour

Το όριο αιτημάτων εφαρμόζεται ανά API Key. Κάθε κλειδί έχει τον δικό του ανεξάρτητο μετρητή που επαναφέρεται σε κυλιόμενη ωριαία βάση.

Όταν υπερβαίνονται τα όρια αιτημάτων

Όταν υπερβείτε το όριο αιτημάτων, το API επιστρέφει απόκριση 429 Too Many Requests:

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

Το πεδίο retryAfter υποδεικνύει τον αριθμό δευτερολέπτων αναμονής πριν κάνετε άλλο αίτημα.

Κεφαλίδες απόκρισης ορίου αιτημάτων

Κάθε απόκριση API περιλαμβάνει κεφαλίδες για να σας βοηθήσουν να παρακολουθείτε τη χρήση του ορίου αιτημάτων:

ΚεφαλίδαΠεριγραφή
X-RateLimit-LimitΜέγιστος αριθμός επιτρεπόμενων αιτημάτων ανά ώρα (50)
X-RateLimit-RemainingΑριθμός εναπομείναντων αιτημάτων στο τρέχον παράθυρο
Retry-AfterΔευτερόλεπτα αναμονής πριν την επανάληψη (μόνο σε αποκρίσεις 429)

Παράδειγμα κεφαλίδων απόκρισης

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

Συμβουλές για να μένετε εντός ορίων

1.

Ελέγξτε τα εναπομείναντα αιτήματα

Παρακολουθήστε την κεφαλίδα X-RateLimit-Remaining για να γνωρίζετε πόσα αιτήματα σας απομένουν.

2.

Εφαρμόστε εκθετική αναμονή

Όταν λάβετε απόκριση 429, περιμένετε και δοκιμάστε ξανά με αυξανόμενες καθυστερήσεις αντί να βομβαρδίζετε το API.

3.

Αποθηκεύστε αποτελέσματα σε cache

Εάν επεξεργάζεστε τα ίδια αρχεία επανειλημμένα, αποθηκεύστε τα αποτελέσματα τοπικά σε cache για να αποφύγετε περιττές κλήσεις API.

4.

Ομαδοποιήστε έξυπνα

Για ομαδική επεξεργασία, κατανείμετε τα αιτήματά σας στο χρόνο αντί να τα στέλνετε όλα ταυτόχρονα.

Παράδειγμα: Διαχείριση ορίων αιτημάτων σε JavaScript

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