تجاوز إلى المحتوى الرئيسي
Didit تجمع 7.5 مليون دولار لبناء البنية التحتية للهوية والاحتيال
Didit
العودة إلى المدونة
المدونة · 6 مارس 2026

إتقان تحديد معدل طلبات واجهة برمجة التطبيقات من جانب العميل لتكاملات Didit (AR)

يتطلب التكامل الفعال مع واجهات برمجة التطبيقات تحديدًا قويًا لمعدل الطلبات لمنع انقطاع الخدمة. يستكشف هذا الدليل استراتيجيات لتطبيق تحديد معدل الطلبات من جانب العميل في JavaScript/TypeScript، مع التركيز على واجهة برمجة تطبيقات.

بواسطة Diditتحديث
client-side-rate-limiting-didit-api-javascript-typescript.png

التقييد الاستباقي هو المفتاح قم بتطبيق تقييد من جانب العميل عندما ينخفض X-RateLimit-Remaining إلى أقل من 15% لتجنب أخطاء 429 وضمان توفر الخدمة المستمر.

التراجع الأسي لـ 429s استخدم دائمًا استراتيجية التراجع الأسي (على سبيل المثال، 5 ثوانٍ، 10 ثوانٍ، 20 ثانية) عند إعادة محاولة الطلبات بعد تلقي استجابة 429، مما يمنع المزيد من انتهاكات حد المعدل.

الاستفادة من رؤوس Didit تُعد الرؤوس X-RateLimit-Limit وX-RateLimit-Remaining وX-RateLimit-Reset التي توفرها واجهة برمجة تطبيقات Didit حاسمة لتحديد معدل الطلبات الديناميكي والذكي من جانب العميل.

Didit يبسط التكامل تعمل حزم SDK الخاصة بـ Didit ونهجها الذي يركز على المطور على تبسيط تطبيق أفضل الممارسات لتكامل واجهات برمجة التطبيقات، بما في ذلك الآليات المضمنة والإرشادات للتعامل مع حدود المعدل بفعالية.

فهم حدود معدل واجهة برمجة التطبيقات وأهميتها

تُعد حدود معدل واجهة برمجة التطبيقات جانبًا أساسيًا من خدمات الويب الحديثة، وهي مصممة لحماية البنية التحتية من سوء الاستخدام، وضمان الاستخدام العادل، والحفاظ على الاستقرار لجميع المستخدمين. بالنسبة للمطورين الذين يدمجون مع خدمات حيوية مثل منصات التحقق من الهوية، فإن فهم هذه الحدود واحترامها أمر بالغ الأهمية. عند التكامل مع واجهة برمجة تطبيقات Didit، ستواجه حدودًا محددة لمعدل الطلبات مصممة لضمان عمليات تحقق موثوقة وعالية الأداء للهوية.

تفرض Didit طبقات متعددة من تحديد معدل الطلبات، بما في ذلك الحدود العالمية لـ GET (300 طلب في الدقيقة لكل تطبيق) ونقاط نهاية الكتابة/الحذف (300 طلب في الدقيقة لكل تطبيق)، بالإضافة إلى حدود أكثر تقييدًا خاصة بنقاط النهاية للعمليات عالية التأثير. على سبيل المثال، POST /v2/session/ (لإنشاء سير عمل التحقق) له حد يبلغ 600 طلب في الدقيقة، بينما GET /v2/session/<id>/decision/ (لاسترداد قرارات الجلسة) وGET /session/<id>/generate-pdf/ محددة بـ 100 طلب في الدقيقة نظرًا لشدتها الحسابية.

يؤدي تجاوز هذه الحدود إلى رمز حالة HTTP 429 (طلبات كثيرة جدًا). في حين أن هذا حماية من جانب الخادم، فإن تحديد معدل الطلبات الفعال من جانب العميل أمر بالغ الأهمية لمنع تطبيقك من الوصول إلى هذه الحدود، مما يضمن تجربة مستخدم سلسة وخدمة متواصلة. قد يؤدي عدم تطبيق التعامل السليم من جانب العميل إلى تدهور الأداء، وفشل عمليات التحقق، وانطباع سيئ لمستخدميك.

استراتيجيات تحديد معدل الطلبات من جانب العميل في JavaScript/TypeScript

يتضمن تطبيق تحديد معدل الطلبات من جانب العميل توقع حدود واجهة برمجة التطبيقات والاستجابة لها قبل أن يتم فرضها بواسطة الخادم. يتطلب هذا مزيجًا من التقييد الاستباقي ومعالجة الأخطاء التفاعلية. فيما يلي الاستراتيجيات الرئيسية:

1. التقييد الاستباقي باستخدام رؤوس تحديد معدل الطلبات

تتضمن واجهة برمجة تطبيقات Didit رؤوسًا محددة في استجابات 429 لا تقدر بثمن لتحديد معدل الطلبات من جانب العميل: X-RateLimit-Limit وX-RateLimit-Remaining وX-RateLimit-Reset (بالثواني منذ بداية العصر). يجب عليك تحليل هذه الرؤوس واستخدامها لإبلاغ سلوك طلب العميل الخاص بك.

سيتتبع العميل القوي:

  • مراقبة X-RateLimit-Remaining: تتبع بنشاط الطلبات المتبقية. عندما تنخفض هذه القيمة عن حد معين (على سبيل المثال، 15% من X-RateLimit-Limit)، يجب أن يبدأ عميلك في تجميع الطلبات أو إبطاء معدل إرساله.
  • استخدام X-RateLimit-Reset: يخبرك هذا الرأس متى يتم إعادة تعيين نافذة حد المعدل الحالية. يمكنك استخدام هذا الطابع الزمني لجدولة متى يمكن لعميلك استئناف الطلبات بكامل سرعتها بأمان.

interface RateLimitHeaders {
  limit: number;
  remaining: number;
  reset: number; // epoch seconds
}

async function makeDiditRequest(url: string, options: RequestInit): Promise<Response> {
  // In a real app, you'd manage these globally or per-endpoint
  let currentRateLimit: RateLimitHeaders | null = null;

  // Implement a local queue or delay mechanism based on currentRateLimit
  // For simplicity, this example focuses on response handling.

  const response = await fetch(url, options);

  const limit = response.headers.get('X-RateLimit-Limit');
  const remaining = response.headers.get('X-RateLimit-Remaining');
  const reset = response.headers.get('X-RateLimit-Reset');

  if (limit && remaining && reset) {
    currentRateLimit = {
      limit: parseInt(limit, 10),
      remaining: parseInt(remaining, 10),
      reset: parseInt(reset, 10),
    };
    console.log(`Rate Limit: ${currentRateLimit.remaining}/${currentRateLimit.limit} requests remaining. Resets at ${new Date(currentRateLimit.reset * 1000).toLocaleTimeString()}.`);
  }

  return response;
}

2. تطبيق التراجع الأسي لاستجابات 429

عندما يتلقى عميلك استجابة 429، فإن النهج الصحيح ليس إعادة المحاولة على الفور. بدلاً من ذلك، قم بتطبيق استراتيجية التراجع الأسي. يتضمن ذلك الانتظار لفترات أطول بشكل متزايد بين عمليات إعادة المحاولة، مما يقلل الحمل على الخادم ويزيد من فرصة النجاح في المحاولات اللاحقة. تتضمن استجابات Didit 429 أيضًا رأس Retry-After، والذي يوفر مدة محددة (بالثواني) للانتظار قبل إعادة المحاولة. قم دائمًا بإعطاء الأولوية لهذا الرأس إذا كان موجودًا.


async function makeDiditRequestWithRetry(url: string, options: RequestInit, retries = 0): Promise<Response> {
  try {
    const response = await makeDiditRequest(url, options);

    if (response.status === 429) {
      const retryAfter = response.headers.get('Retry-After');
      const delay = retryAfter ? parseInt(retryAfter, 10) * 1000 : Math.pow(2, retries) * 1000; // Exponential backoff: 1s, 2s, 4s...
      console.warn(`Rate limit hit. Retrying in ${delay / 1000} seconds...`);
      await new Promise(resolve => setTimeout(resolve, delay));
      return makeDiditRequestWithRetry(url, options, retries + 1);
    }

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }

    return response;
  } catch (error) {
    console.error('Request failed:', error);
    throw error;
  }
}

// Example usage for a Didit session decision retrieval
// This endpoint is limited to 100 rpm.
// makeDiditRequestWithRetry(`/v2/session/${sessionId}/decision/`, { method: 'GET' });

3. الاستفادة من حزم SDK الخاصة بـ Didit للتكامل المبسّط

تقدم Didit حزم SDK قوية لمختلف البيئات، بما في ذلك حزمة JavaScript SDK لتطبيقات الويب. غالبًا ما تعمل حزم SDK هذه على تجريد الكثير من تعقيد تفاعل واجهة برمجة التطبيقات، بما في ذلك معالجة أنماط الأخطاء الشائعة وتوفير ردود اتصال تعتمد على الأحداث لسير عمل التحقق. بينما قد تظل هناك حاجة إلى منطق تحديد معدل الطلبات الصريح لمكالمات واجهة برمجة التطبيقات المخصصة عالية الحجم، فإن استخدام حزم SDK لسير عمل التحقق الذي يواجه المستخدم (مثل التحقق من الهوية، والتحقق من الوجود السلبي والنشط، أو تقدير العمر) يبسط التكامل بشكل كبير.

تم تصميم حزم SDK لسير عمل يواجه المستخدم، حيث يبدأ الواجهة الخلفية الخاصة بك جلسة (POST /v2/session/) ويقوم الواجهة الأمامية الخاصة بك بعرض واجهة مستخدم التحقق. تتعامل حزمة SDK مع التفاعل مع خدمات Didit، مما يقلل من العبء المباشر لإدارة حدود معدل طلبات واجهة برمجة التطبيقات الفردية من جانب العميل أثناء عملية التحقق نفسها. عند التكامل مع حزمة JavaScript SDK، تقوم بتهيئتها برمز جلسة من الواجهة الخلفية الخاصة بك، وتدير التدفق، وتوفر ردود اتصال onSuccess وonError وonCancel.

كيف تساعد Didit

تم تصميم Didit لتكون منصة هوية تركز على المطور، تعتمد على الذكاء الاصطناعي وتوفر خيارات تكامل مرنة مع الحفاظ على أداء قوي. يساعد نهجنا في تصميم واجهة برمجة التطبيقات وحزم SDK بطبيعته في إدارة حدود معدل الطلبات وضمان عمليات سلسة:

  • وثائق واضحة لحدود معدل الطلبات: توفر Didit وثائق شفافة ومفصلة حول جميع حدود معدل واجهة برمجة التطبيقات، مما يسمح للمطورين بتخطيط تكاملاتهم بفعالية.
  • رؤوس معلوماتية: يمكّن تضمين رؤوس X-RateLimit-Limit وX-RateLimit-Remaining وX-RateLimit-Reset وRetry-After المطورين من بناء تطبيقات عميل ذكية ذاتية التنظيم.
  • هندسة معمارية معيارية: يعني التصميم المعياري لـ Didit أنك تدمج فقط أساسيات الهوية التي تحتاجها، مثل التحقق من الهوية لعمليات فحص المستندات، والتحقق من الوجود السلبي والنشط للكشف عن الاحتيال، أو تقدير العمر للتحقق من العمر. يمكن أن يساعد هذا النهج المستهدف في تحسين أنماط طلبات واجهة برمجة التطبيقات الخاصة بك.
  • حزم SDK لسير عمل مبسط: تعمل حزم SDK الخاصة بالويب والجوال على تبسيط تكامل عمليات التحقق المعقدة التي يواجهها المستخدم. من خلال التعامل مع تعقيدات سير عمل التحقق، بما في ذلك العديد من مكالمات واجهة برمجة التطبيقات الأساسية، تعمل حزم SDK على تجريد مخاوف تحديد معدل الطلبات المباشرة لتلك التفاعلات المحددة، مما يسمح لك بالتركيز على منطق تطبيقك.
  • معرفة عميلك الأساسية المجانية (Free Core KYC): تقدم Didit معرفة عميلك الأساسية المجانية، مما يمكّن الشركات من البدء بخدمات التحقق الأساسية من الهوية دون تكاليف أولية، مما يسهل اختبار وتحسين استراتيجيات التكامل الخاصة بك، بما في ذلك التعامل مع حدود معدل الطلبات.

هل أنت مستعد للبدء؟

هل أنت مستعد لرؤية Didit في العمل؟ احصل على عرض توضيحي مجاني اليوم.

ابدأ في التحقق من الهويات مجانًا باستخدام الطبقة المجانية من Didit.

بنية تحتية للهوية والاحتيال.

واجهة برمجية واحدة لـ KYC و KYB ومراقبة المعاملات وفحص المحافظ. ادمجها في 5 دقائق.

اطلب من الذكاء الاصطناعي تلخيص هذه الصفحة
تحديد معدل الطلبات من جانب العميل لواجهات Didit API.