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

CodDescriere
200Succes
400Cerere incorectă (parametri invalizi)
401Neautorizat (cheie API invalidă sau lipsă)
403Interzis (restricții ale planului)
404Negăsit (carta sau resursa nu există)
429Prea multe cereri (limita de rată depășită)
500Eroare 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ă")