Pengendalian Ralat
Kod status HTTP, format respons ralat API TCG Price Lookup, dan cara mengatasinya.
Format Respons Ralat
Semua ralat mengembalikan format JSON yang konsisten:
{
"error": {
"code": "error_code",
"message": "Penerangan ralat yang boleh dibaca manusia",
"details": {}
}
}
Kod Status HTTP
| Kod | Penerangan |
|---|---|
200 | Berjaya |
400 | Permintaan Tidak Baik (parameter tidak sah) |
401 | Tidak Disahkan (kunci API tidak sah atau tiada) |
403 | Dilarang (sekatan akses pelan) |
404 | Tidak Dijumpai (kad atau sumber tidak wujud) |
429 | Terlalu Banyak Permintaan (had kadar melebihi) |
500 | Ralat Pelayan |
Ralat Biasa dan Cara Mengatasinya
401 Unauthorized
{ "error": { "code": "unauthorized", "message": "Invalid or missing API key" } }
Penyelesaian: Semak kunci API anda. Pastikan pengepala X-API-Key ditetapkan dengan betul.
429 Too Many Requests
{ "error": { "code": "rate_limit_exceeded", "message": "Daily limit reached" } }
Respons termasuk pengepala Retry-After yang menunjukkan berapa saat sebelum permintaan seterusnya:
Retry-After: 3600
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1704067200
Penyelesaian: Hormati pengepala Retry-After. Had harian ditetapkan semula pada tengah malam UTC. Naik taraf pelan anda jika anda memerlukan lebih banyak permintaan.
403 Forbidden
{ "error": { "code": "feature_not_available", "message": "Price history requires Trader plan" } }
Penyelesaian: Ciri seperti sejarah harga, harga bergred, dan carian kelompok memerlukan pelan yang lebih tinggi.
Pengendalian Ralat dengan SDK
// JavaScript
try {
const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
if (error.status === 429) {
// Had kadar: semak masa untuk cuba semula
const retryAfter = error.headers['retry-after'];
console.log(`Had kadar. Cuba semula selepas ${retryAfter} saat`);
} else if (error.status === 401) {
console.error('Kunci API tidak sah');
}
}
# Python
from tcglookup import TCGLookup, RateLimitError, AuthError
try:
results = tcg.cards.search(name="charizard", game="pokemon")
except RateLimitError as e:
print(f"Had kadar. Cuba semula selepas {e.retry_after} saat")
except AuthError:
print("Kunci API tidak sah")