Error Handling

Mga HTTP status code, format ng error response, at kung paano ito haharapin para sa TCG Price Lookup API.


Format ng Error Response

Lahat ng error ay nagbabalik ng consistent na JSON format:

{
  "error": {
    "code": "error_code",
    "message": "Paliwanag ng error na nababasa ng tao",
    "details": {}
  }
}

Mga HTTP Status Code

CodePaliwanag
200Tagumpay
400Bad Request (invalid na parameters)
401Unauthorized (invalid o nawawalang API key)
403Forbidden (limitasyon ng plan)
404Not Found (card o resource ay hindi umiiral)
429Too Many Requests (nalampasan ang rate limit)
500Server Error

Mga Karaniwang Error at Paraan ng Pagharap

401 Unauthorized

{ "error": { "code": "unauthorized", "message": "Invalid or missing API key" } }

Solusyon: Suriin ang iyong API key. Tiyaking nakatakda nang tama ang X-API-Key header.

429 Too Many Requests

{ "error": { "code": "rate_limit_exceeded", "message": "Daily limit reached" } }

Ang response ay naglalaman ng Retry-After header na nagpapakita kung ilang segundo bago ang susunod na request:

Retry-After: 3600
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1704067200

Solusyon: Igalang ang Retry-After header. Ang daily limits ay nire-reset sa UTC midnight. I-upgrade ang iyong plan kung kailangan ng mas maraming requests.

403 Forbidden

{ "error": { "code": "feature_not_available", "message": "Price history requires Trader plan" } }

Solusyon: Ang mga feature tulad ng price history, graded prices, at batch lookup ay nangangailangan ng mas mataas na plan.

Error Handling sa SDK

// JavaScript
try {
  const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
  if (error.status === 429) {
    // Rate limit: tingnan kung kailan maaaring mag-retry
    const retryAfter = error.headers['retry-after'];
    console.log(`Rate limited. Subukan muli pagkatapos ng ${retryAfter} segundo`);
  } else if (error.status === 401) {
    console.error('Invalid ang API key');
  }
}
# Python
from tcglookup import TCGLookup, RateLimitError, AuthError

try:
    results = tcg.cards.search(name="charizard", game="pokemon")
except RateLimitError as e:
    print(f"Rate limited. Subukan muli pagkatapos ng {e.retry_after} segundo")
except AuthError:
    print("Invalid ang API key")