Gestionarea erorilor
Coduri de stare HTTP, formatul răspunsurilor de eroare și cum să le gestionați în TCG Price Lookup API.
Formatul răspunsului de eroare
Toate erorile returnează un format JSON consistent:
{
"error": {
"code": "error_code",
"message": "Descriere lizibilă a erorii",
"details": {}
}
}
Coduri de stare HTTP
| Cod | Descriere |
|---|---|
200 | Succes |
400 | Cerere incorectă (parametri invalizi) |
401 | Neautorizat (cheie API invalidă sau lipsă) |
403 | Interzis (restricții ale planului) |
404 | Negăsit (carta sau resursa nu există) |
429 | Prea multe cereri (limita de rată depășită) |
500 | Eroare server |
Erori frecvente și cum să le gestionați
401 Unauthorized
{ "error": { "code": "unauthorized", "message": "Invalid or missing API key" } }
Soluție: Verificați cheia API. Asigurați-vă că headerul X-API-Key este configurat corect.
429 Too Many Requests
{ "error": { "code": "rate_limit_exceeded", "message": "Daily limit reached" } }
Răspunsul include headerul Retry-After cu numărul de secunde până la următoarea cerere:
Retry-After: 3600
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1704067200
Soluție: Respectați headerul Retry-After. Limitele zilnice se resetează la miezul nopții UTC. Actualizați planul dacă aveți nevoie de mai multe cereri.
403 Forbidden
{ "error": { "code": "feature_not_available", "message": "Price history requires Trader plan" } }
Soluție: Funcționalitățile precum istoricul prețurilor, prețurile gradate și căutarea în lot necesită un plan superior.
Gestionarea erorilor cu SDK-uri
// JavaScript
try {
const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
if (error.status === 429) {
// Limită de rată: verificați timpul de așteptare
const retryAfter = error.headers['retry-after'];
console.log(`Limită de rată. Reîncercați după ${retryAfter} secunde`);
} else if (error.status === 401) {
console.error('Cheie API invalidă');
}
}
# Python
from tcglookup import TCGLookup, RateLimitError, AuthError
try:
results = tcg.cards.search(name="charizard", game="pokemon")
except RateLimitError as e:
print(f"Limită de rată. Reîncercați după {e.retry_after} secunde")
except AuthError:
print("Cheie API invalidă")