انتقل إلى المحتوى

الحالات والأخطاء

كل رمز تعيده الواجهة، وما تفعله معه.

الرموز

الرمزمتىما تفعله
200نجح الطلباقرأ JSON
302/dl يحوّل إلى الملفيتبعه المتصفح
307الصورة المصغرة تحوّل إلى ملفهايتبعه المتصفح
308الجهة غيّرت slugاتبع Location، وحدّث ما حفظته
404لا جهة منشورة بهذا المعرّف، أو لا ملفاعرض «غير موجود»
429تجاوزت الحدانتظر Retry-After ثانية، ثم أعد مرة

أجسام الأخطاء

GET /api/v1/brands/{slug} حين لا توجد الجهة، بـ 404:

JSON
{ "error": "not_found" }

GET /api/v1/search/suggest بعد تجاوز الحد، بـ 429:

JSON
{ "items": [], "error": "rate_limited" }

/dl و/thumb تعيدان نصًا قصيرًا لا JSON.

إعادة المحاولة بعد 429

get-json.js

/** GET with one wait-and-retry on 429, as the server asks. */export async function getJson(url) {  for (let attempt = 0; attempt < 2; attempt++) {    const res = await fetch(url);    if (res.status === 429 && attempt === 0) {      const seconds = Number(res.headers.get('Retry-After') ?? 60);      await new Promise((r) => setTimeout(r, seconds * 1000));      continue;    }    if (res.status === 404) return null;    if (!res.ok) throw new Error(`HTTP ${res.status}`);    return res.json();  }}