تحديد السرعة مقابل الحد الأقصى | فروق يجب معرفتها

تُعدّ تقنيتا القيود والتحجيم طريقتين لضمان أن يتمتع مستخدمو واجهة برمجة التطبيقات بتجربة سلسة وممتعة. من خلال منع تحميل واجهات البرمجة، اكتشف كيف يمكن تنفيذ القيود والتحجيم في واجهات برمجة التطبيقات الخاصة بك اليوم!

Amir Hassan

Amir Hassan

18 أغسطس 2025

تحديد السرعة مقابل الحد الأقصى | فروق يجب معرفتها

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

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

💡
تواجه معظم أدوات واجهات برمجة التطبيقات قيودًا عند استخدامها - طلبات محدودة يجب تقديمها، حالات اختبار محدودة يجب إعدادها، وهكذا. ومع ذلك، هناك أداة واجهات برمجة تطبيقات تتجاوز كل هذه القيود.

نقدم لكم Apidog، أداة تطوير واجهات برمجة التطبيقات الشاملة التي تتيح لك اختبار واجهات برمجة التطبيقات بلا حدود. القيد الوحيد الذي تملكه Apidog هو القيد الذي تفرضه واجهات برمجة التطبيقات التابعة لجهات خارجية (سواء كانت ستخنق واجهات برمجة التطبيقات الخاصة بها أم لا).

إذا كنت مهتمًا بتجربة Apidog، ابدأ مجانًا اليوم (أو في المستقبل) بالنقر على الزر أدناه! 👇 👇 👇
button

للتعرف على الفرق بين الاختناق وتحديد المعدل، سنحدد كل منهما بشكل فردي.

ما هو الاختناق؟

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

الميزات الرئيسية للاختناق في واجهات برمجة التطبيقات

1. التعديلات الديناميكية:

2. التقنيات والخوارزميات:

3. خيارات التكوين:

4. آليات الاستجابة:

5. الميزات المتقدمة:

مثال على شفرة الاختناق في واجهات برمجة التطبيقات

1. اختناق واجهة برمجة تطبيقات بسيطة مع تأخير (بايثون):

def handle_request(user_id):
  # محاكاة التحقق من عداد مورد مشترك
  if resource_counter > threshold:
    time.sleep(delay_time)  # اختناق من خلال إدخال تأخير
  # معالجة منطق الطلب هنا...

2. اختناق دلو الرموز لطلبات واجهة برمجة التطبيقات (بايثون)

from threading import Lock

class TokenBucket:
  """
  فصل دلو الرموز البسيط لتحديد المعدل.
  """
  def __init__(self, capacity, refill_rate):
    """
    تهيئة دلو الرموز بسعة معينة ومعدل تجديد.

    Args:
      capacity (int): العدد الأقصى من الرموز التي يمكن أن يحملها الدلو.
      refill_rate (float): معدل إضافة الرموز إلى الدلو (رموز في الثانية).
    """
    self.capacity = capacity
    self.refill_rate = refill_rate
    self.tokens = capacity  # بدءًا بدلو مليء
    self.last_refill_time = time.time()
    self.lock = Lock()

  def consume(self, amount):
    """
    يحاول استهلاك عدد معين من الرموز من الدلو.

    Args:
      amount (int): عدد الرموز للاستهلاك.

    Returns:
      bool: صحيح إذا تم استهلاك الرموز بنجاح، خطأ بخلاف ذلك.
    """
    with self.lock:
      self._refill()
      if self.tokens >= amount:
        self.tokens -= amount
        return True
      return False

  def _refill(self):
    """
    يجدد الدلو بناءً على الوقت المنقضي ومعدل التجديد.
    """
    now = time.time()
    elapsed_time = now - self.last_refill_time
    self.tokens = min(self.capacity, self.tokens + (elapsed_time * self.refill_rate))
    self.last_refill_time = now

# استخدام مثال
bucket = TokenBucket(capacity=5, refill_rate=1)  # 5 رموز، متجددة بمعدل 1 رمز/ثانية

def access_api():
  # محاكاة منطق طلب واجهة برمجة التطبيقات هنا...
  print("الوصول إلى واجهة برمجة التطبيقات...")

if bucket.consume(2):
  access_api()
else:
  print("تم اختناق الطلب، لا توجد رموز كافية!")

# حاول مرة أخرى بعد تأخير قصير
time.sleep(1)

if bucket.consume(1):
  access_api()
else:
  print("تم اختناق الطلب، لا توجد رموز كافية!")

تفسير الشفرة (خطوة بخطوة):

  1. أولًا، قم بتعريف TokenBucket class الذي يدير مجموعة الرموز
  2. يأخذ السعة (الحد الأقصى من الرموز) ومعدل التجديد (الرموز في الثانية) كوسائط.
  3. تحاول طريقة consume إزالة عدد معين من الرموز من الدلو.
  4. تقوم باستدعاء الطريقة الخاصة _refill لضمان تحديث الدلو بناءً على الوقت الماضي.
  5. إذا كانت الرموز كافية، يتم استهلاكها - ترجع الطريقة True
  6. بخلاف ذلك، ترجع الطريقة False - يشير إلى الاختناق.

ما هو تحديد المعدل؟

في سياق واجهات برمجة التطبيقات، يشير تحديد المعدل إلى تقييد معين على عدد الطلبات التي يمكن أن يقدمها مستخدم أو تطبيق خلال فترة زمنية محددة. تخيل ذلك كما لو كان في نافذة التذاكر في معلم شهير، حيث يُسمح بعدد معين من الطلبات في الدقيقة.

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

1.تكوين الحدود:

حدود الطلب: تحدد مزودي واجهات برمجة التطبيقات العدد الأقصى من الطلبات المسموح بها لكل مستخدم أو تطبيق خلال فترة زمنية محددة (مثل 100 طلب في الساعة). يمكن أن تستند هذه الحدود إلى عوامل مثل:

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

2.آليات العد:

تحديد هوية المستخدم: ترتبط الطلبات بمستخدمين أو تطبيقات. يمكن تحقيق ذلك من خلال:

عدادات الطلب: تحتفظ واجهة برمجة التطبيقات بسجل لعدد الطلبات التي تم استلامها من كل مستخدم/تطبيق ضمن نافذة الوقت الحالية.

3. استراتيجيات التطبيق:

4. الميزات المتقدمة:

5. التواصل والمراقبة:

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

1. تتبع الحدود ونوافذ الوقت (بايثون):

# محاكاة تخزين معلومات حد المعدل المسترجعة من التوثيق
rate_limit = 100  # الطلبات في الساعة
time_window = 3600  # ثواني في الساعة

last_request_time = None

def make_api_request():
  global last_request_time

  # التحقق مما إذا كنت ضمن نافذة الوقت وما إذا كانت هناك طلبات كافية متبقية (افتراضى)
  if last_request_time is None or (time.time() - last_request_time) >= time_window:
    # إجراء الطلب
    last_request_time = time.time()
    # ... (منطق طلب واجهة برمجة التطبيقات)
  else:
    print("تم الوصول إلى حد معدل واجهة برمجة التطبيقات، انتظر لإعادة الضبط...")
    # تنفيذ استراتيجية التراجع (انظر النقطة 3)

# استخدام مثال
make_api_request()

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

2. استخدام رؤوس استجابة واجهة برمجة التطبيقات (بايثون):

import requests

def make_api_request():
  response = requests.get("https://api.example.com/data")
  if response.status_code == 429:  # رمز تجاوز حد المعدل
    # استخراج معلومات حدود المعدل من الرؤوس (X-RateLimit-Remaining، X-RateLimit-Reset)
    # تنفيذ استراتيجية التراجع (انظر النقطة 3)
  else:
    # معالجة الاستجابة الناجحة
    # ...

يتحقق مثال الشفرة أعلاه من رمز حالة الاستجابة لعرض شائع لخطأ حد المعدل 429 ويحاول استخراج المعلومات ذات الصلة من رؤوس الاستجابة إذا تمت مواجهته.

الاختلافات الملخصة بين الاختناق وتحديد المعدل

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

Apidog - طلبات غير محدودة لإتقان تطبيقك

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

واجهة Apidog
button

تعرف على Apidog، أداة تطوير واجهات برمجة التطبيقات الشاملة التي تسهل كل عملية تطوير واجهة برمجة التطبيقات لدورة حياة واجهة برمجة التطبيقات الكاملة. مع Apidog، يمكنك إنشاء واجهات برمجة تطبيقات جديدة وتعديل واجهات برمجة التطبيقات الحالية، وإجراء اختبارات، ومحاكاة، وتوثيق لضمان أن واجهات برمجة التطبيقات الخاصة بك ستعمل بسلاسة.

بناء واجهات برمجة التطبيقات باستخدام Apidog

مع Apidog، يمكنك إنشاء واجهات برمجة التطبيقات بنفسك. هذا يعني أنه يمكنك أيضًا تعيين حد معدل واجهتك الخاصة، وتقرر إذا كنت تريد اختناق واجهتك بمساعدة ترميز إضافي.

واجهة برمجة جديدة Apidog

ابدأ بالضغط على زر New API، كما هو موضح في الصورة أعلاه.

إضافة تفاصيل واجهة برمجة جديدة Apidog

بعد ذلك، يمكنك اختيار العديد من خصائص واجهة برمجة التطبيقات. في هذه الصفحة، يمكنك:

كلما زادت التفاصيل التي يمكنك تقديمها لمرحلة التصميم، كلما كانت الوثائق الخاصة بواجهة برمجة التطبيقات الخاصة بك أكثر وصفًا، كما هو موضح في القسم التالي من هذه المقالة.

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

لتوفير بعض المساعدة في إنشاء واجهات برمجة التطبيقات في حالة كانت هذه هي المرة الأولى لك في إنشاء واحدة، قد تفكر في قراءة هذه المقالات.

بمجرد الانتهاء من جميع الاحتياجات الأساسية لتقديم طلب، يمكنك محاولة تقديم الطلب عن طريق النقر على Send. يجب أن تتلقى استجابة في الجزء السفلي من نافذة Apidog، كما هو موضح في الصورة أعلاه.

تتيح واجهة المستخدم البسيطة والبديهية للمستخدمين رؤية الاستجابة الناتجة عن الطلب بسهولة. من المهم أيضًا فهم هيكل الاستجابة حيث تحتاج إلى مطابقة الشفرة على كلا من جانب العميل والخادم.

إنشاء توثيق شامل لواجهة برمجة التطبيقات باستخدام Apidog

مع Apidog، يمكنك بسرعة إنشاء توثيق لواجهة برمجة التطبيقات يتضمن كل ما يحتاجه المطورون في بضع نقرات فقط.

عملية خطوة بخطوة لمشاركة وثائق واجهة البرمجة Apidog

السهم 1 - أولاً، اضغط على زر Share على الجانب الأيسر من نافذة تطبيق Apidog. يجب أن تتمكن بعد ذلك من رؤية صفحة "المستندات المشتركة"، والتي يجب أن تكون فارغة.

السهم 2 - اضغط على زر + New تحت No Data لبدء إنشاء أول وثيقة لواجهة برمجة التطبيقات الخاصة بك في Apidog.

حدد وضمن الخصائص الهامة لوثائق واجهة برمجة التطبيقات

إدخال تفاصيل واجهة برمجة التطبيقات واختيار خصائص الوثائق Apidog

توفر Apidog للمطورين خيار اختيار خصائص توثيق واجهة برمجة التطبيقات، مثل من يمكنه عرض توثيق واجهة برمجة التطبيقات الخاصة بك وتعيين كلمة مرور لملف، بحيث لا يمكن عرضها إلا من قبل أفراد أو منظمات مختارة.

عرض أو مشاركة توثيق واجهة برمجة التطبيقات الخاصة بك

فتح مشاركة وثائق واجهة برمجة التطبيقات لتعديلها Apidog

تقوم Apidog بتجميع تفاصيل مشروع واجهة برمجة التطبيقات الخاصة بك في وثائق يمكن عرضها من خلال عنوان ويب. كل ما عليك فعله هو توزيع عنوان URL حتى يتمكن الآخرون من عرض الوثائق الخاصة بواجهة برمجة التطبيقات الخاصة بك!

إذا كنت بحاجة إلى مزيد من التفاصيل، اقرأ هذا المقال حول كيفية إنشاء توثيق واجهة برمجة التطبيقات باستخدام Apidog:

خاتمة

يعتبر الاختناق وتحديد المعدل كلاهما أدوات أساسية لإدارة وصول واجهات برمجة التطبيقات وضمان التشغيل السلس. بينما يتشاركان في الهدف المشترك المتمثل في منع التحميل الزائد، إلا أنهما يختلفان في نهجهما.

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

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

مع Apidog، لا داعي للقلق بشأن الطلبات المحدودة. يمكنك أيضًا استيراد واجهات برمجة التطبيقات التي ترغب في فهمها وتحليلها باستخدام التصميم البسيط والبديهي لـ Apidog. ابدأ رحلتك في تطوير واجهات برمجة التطبيقات مع Apidog اليوم!

button

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات