Penanganan Error
Kode status HTTP, format respons error, dan cara menanganinya di TCG Price Lookup API.
Format Respons Error
Semua error mengembalikan format JSON yang konsisten:
{
"error": {
"code": "error_code",
"message": "Penjelasan error yang dapat dibaca manusia",
"details": {}
}
}
Kode Status HTTP
| Kode | Deskripsi |
|---|---|
200 | Berhasil |
400 | Permintaan tidak valid (parameter tidak valid) |
401 | Tidak terautentikasi (API key tidak valid atau tidak ada) |
403 | Dilarang (pembatasan akses paket) |
404 | Tidak ditemukan (kartu atau sumber daya tidak ada) |
429 | Terlalu banyak permintaan (rate limit terlampaui) |
500 | Error server |
Error Umum dan Cara Mengatasinya
401 Unauthorized
{ "error": { "code": "unauthorized", "message": "Invalid or missing API key" } }
Solusi: Periksa API key Anda. Pastikan header X-API-Key disetel dengan benar.
429 Too Many Requests
{ "error": { "code": "rate_limit_exceeded", "message": "Daily limit reached" } }
Respons menyertakan header Retry-After yang menunjukkan berapa detik hingga permintaan berikutnya:
Retry-After: 3600
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1704067200
Solusi: Hormati header Retry-After. Batas harian direset tengah malam UTC. Upgrade paket jika Anda memerlukan lebih banyak permintaan.
403 Forbidden
{ "error": { "code": "feature_not_available", "message": "Price history requires Trader plan" } }
Solusi: Fitur seperti riwayat harga, harga graded, dan pencarian batch memerlukan paket yang lebih tinggi.
Penanganan Error dengan SDK
// JavaScript
try {
const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
if (error.status === 429) {
// Rate limit: periksa berapa lama harus menunggu
const retryAfter = error.headers['retry-after'];
console.log(`Rate limit. Coba lagi dalam ${retryAfter} detik`);
} else if (error.status === 401) {
console.error('API key tidak valid');
}
}
# Python
from tcglookup import TCGLookup, RateLimitError, AuthError
try:
results = tcg.cards.search(name="charizard", game="pokemon")
except RateLimitError as e:
print(f"Rate limit. Coba lagi dalam {e.retry_after} detik")
except AuthError:
print("API key tidak valid")