Όρια αιτημάτων
Κατανοήστε τα όρια αιτημάτων του FreeFileTools API και πώς να τα διαχειρίζεστε στην εφαρμογή σας.
Όρια δωρεάν πλάνου
| Όριο | Τιμή |
|---|---|
| Αιτήματα ανά ώρα | 50 |
| Μέγιστο μέγεθος αρχείου ανά αίτημα | 25 MB |
| Παράθυρο ορίου αιτημάτων | Rolling 1 hour |
Το όριο αιτημάτων εφαρμόζεται ανά API Key. Κάθε κλειδί έχει τον δικό του ανεξάρτητο μετρητή που επαναφέρεται σε κυλιόμενη ωριαία βάση.
Όταν υπερβαίνονται τα όρια αιτημάτων
Όταν υπερβείτε το όριο αιτημάτων, το API επιστρέφει απόκριση 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
}Το πεδίο retryAfter υποδεικνύει τον αριθμό δευτερολέπτων αναμονής πριν κάνετε άλλο αίτημα.
Κεφαλίδες απόκρισης ορίου αιτημάτων
Κάθε απόκριση API περιλαμβάνει κεφαλίδες για να σας βοηθήσουν να παρακολουθείτε τη χρήση του ορίου αιτημάτων:
| Κεφαλίδα | Περιγραφή |
|---|---|
X-RateLimit-Limit | Μέγιστος αριθμός επιτρεπόμενων αιτημάτων ανά ώρα (50) |
X-RateLimit-Remaining | Αριθμός εναπομείναντων αιτημάτων στο τρέχον παράθυρο |
Retry-After | Δευτερόλεπτα αναμονής πριν την επανάληψη (μόνο σε αποκρίσεις 429) |
Παράδειγμα κεφαλίδων απόκρισης
HTTP/1.1 200 OK
Content-Type: image/jpeg
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 42Συμβουλές για να μένετε εντός ορίων
Ελέγξτε τα εναπομείναντα αιτήματα
Παρακολουθήστε την κεφαλίδα X-RateLimit-Remaining για να γνωρίζετε πόσα αιτήματα σας απομένουν.
Εφαρμόστε εκθετική αναμονή
Όταν λάβετε απόκριση 429, περιμένετε και δοκιμάστε ξανά με αυξανόμενες καθυστερήσεις αντί να βομβαρδίζετε το API.
Αποθηκεύστε αποτελέσματα σε cache
Εάν επεξεργάζεστε τα ίδια αρχεία επανειλημμένα, αποθηκεύστε τα αποτελέσματα τοπικά σε cache για να αποφύγετε περιττές κλήσεις API.
Ομαδοποιήστε έξυπνα
Για ομαδική επεξεργασία, κατανείμετε τα αιτήματά σας στο χρόνο αντί να τα στέλνετε όλα ταυτόχρονα.
Παράδειγμα: Διαχείριση ορίων αιτημάτων σε 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");
}