Error Handling
HTTP status code, รูปแบบ error response และวิธีจัดการ error ของ TCG Price Lookup API
รูปแบบ Error Response
ทุก error return รูปแบบ JSON ที่สอดคล้องกัน:
{
"error": {
"code": "error_code",
"message": "คำอธิบาย error ที่มนุษย์อ่านได้",
"details": {}
}
}
HTTP Status Code
| Code | คำอธิบาย |
|---|---|
200 | สำเร็จ |
400 | Bad Request (parameter ไม่ถูกต้อง) |
401 | Unauthorized (API key ไม่ถูกต้องหรือขาดหาย) |
403 | Forbidden (การจำกัดการเข้าถึงตามแพ็กเกจ) |
404 | Not Found (ไม่พบการ์ดหรือ resource) |
429 | Too Many Requests (เกิน rate limit) |
500 | Server Error |
Error ที่พบบ่อยและวิธีแก้ไข
401 Unauthorized
{ "error": { "code": "unauthorized", "message": "Invalid or missing API key" } }
วิธีแก้: ตรวจสอบ API key ยืนยันว่า header X-API-Key ตั้งค่าถูกต้อง
429 Too Many Requests
{ "error": { "code": "rate_limit_exceeded", "message": "Daily limit reached" } }
Response จะมี header Retry-After บอกจำนวนวินาทีก่อน request ถัดไป:
Retry-After: 3600
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1704067200
วิธีแก้: ปฏิบัติตาม header Retry-After limit รายวันรีเซ็ตทุกเที่ยงคืน UTC ถ้าต้องการ request มากกว่านี้ให้ upgrade แพ็กเกจ
403 Forbidden
{ "error": { "code": "feature_not_available", "message": "Price history requires Trader plan" } }
วิธีแก้: ฟีเจอร์เช่น price history, graded price และ batch search ต้องการแพ็กเกจที่สูงกว่า
Error Handling ด้วย SDK
// JavaScript
try {
const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
if (error.status === 429) {
// Rate limit: ดูเวลาก่อน retry
const retryAfter = error.headers['retry-after'];
console.log(`Rate limit กรุณา retry ใน ${retryAfter} วินาที`);
} else if (error.status === 401) {
console.error('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 limit กรุณา retry ใน {e.retry_after} วินาที")
except AuthError:
print("API key ไม่ถูกต้อง")