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

KodPenerangan
200Berjaya
400Permintaan Tidak Baik (parameter tidak sah)
401Tidak Disahkan (kunci API tidak sah atau tiada)
403Dilarang (sekatan akses pelan)
404Tidak Dijumpai (kad atau sumber tidak wujud)
429Terlalu Banyak Permintaan (had kadar melebihi)
500Ralat 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")