نظرة سريعة#
تردّ البوابة على أخطائها بجسم JSON فيه حقل message، ويحمل كل رد ترويسة X-Kong-Request-Id. أما الأخطاء الصادرة من خدمة المزوّد نفسها فتُمرَّر كما هي.
{
"message": "No active subscription for this product"
}ردود البوابة#
| الرمز | الرسالة | المعنى وما تفعله |
|---|---|---|
403 | No active subscription for this product | لا اشتراك فعّال لهذا التطبيق في هذا المنتج، أو الاشتراك غير فعّال، أو المفتاح خاطئ. تحقّق من المفتاح ومن الاشتراك. |
403 | Subscription quota exceeded | نفدت حصة الاشتراك لدورة الفوترة. لا تُعِد المحاولة. |
429 | Endpoint quota exceeded | نفدت حصة نقطة النهاية. لا تُعِد المحاولة. |
404 | no Route matched with those values | لا يوجد مسار مطابق للطلب. تحقّق من عنوان البوابة وبادئة الإصدار ومسار نقطة النهاية. |
503 | Subscription service unavailable | تبعيّة في البوابة غير متاحة مؤقتاً. أعِد المحاولة بتباعد. |
500 | Route configuration error | إعداد المسار على جانب المنصة غير صحيح. تواصل مع الدعم واذكر معرّف الطلب. |
إعادة المحاولة بتباعد أسّي وعشوائية#
أعِد المحاولة للأعطال المؤقتة فقط (أخطاء الشبكة وردود 502 أو 503 أو 504)، ثلاث مرات على الأكثر، وبفاصل عشوائي. وإلا أعاد كل عملائك المحاولة في اللحظة نفسها فصنعوا موجة ثانية.
async function call(fn, tries = 3) { for (let i = 0; i < tries; i++) { const res = await fn(); // retry temporary failures only: not an exhausted quota, not a missing subscription if (![502, 503, 504].includes(res.status) || i === tries - 1) return res; await new Promise((r) => setTimeout(r, 2 ** i * 1000 + Math.random() * 400)); } }
حين تحتاج الدعم#
أرسل قيمة X-Kong-Request-Id من الرد عند التواصل مع الدعم، ليُعثر على الاستدعاء (احصل على المساعدة).
غلاف أخطاء موحّد فيه رمز الخطأ والرسالة ومعرّف الطلب في الجسم؛ وRetry-After في ردود التقييد؛ ورسائل بالعربية أو الإنجليزية بحسب Accept-Language؛ وترويسة Idempotency-Key لإعادة محاولة طلبات POST بأمان.