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
| Code | Paliwanag |
|---|---|
200 | Tagumpay |
400 | Bad Request (invalid na parameters) |
401 | Unauthorized (invalid o nawawalang API key) |
403 | Forbidden (limitasyon ng plan) |
404 | Not Found (card o resource ay hindi umiiral) |
429 | Too Many Requests (nalampasan ang rate limit) |
500 | Server 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")