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

ما هو تقييد واجهة برمجة التطبيقات؟
تقييد واجهة برمجة التطبيقات هو آلية تستخدم للتحكم في معدل وصول التطبيقات إلى واجهة برمجة التطبيقات. بعبارة أخرى، يحدد تقييد واجهة برمجة التطبيقات عدد الطلبات التي يمكن إرسالها إلى واجهة برمجة التطبيقات ضمن فترة زمنية محددة.
يستخدم تقييد واجهة برمجة التطبيقات لحماية واجهة برمجة التطبيقات من الحمل الزائد، مما يضمن أن يتمتع الجميع بأداء سلس عند استخدام واجهة برمجة التطبيقات.
كيف يعمل تقييد واجهة برمجة التطبيقات؟
لتنفيذ تقييد واجهة برمجة التطبيقات، ستعتمد التطبيقات على خوارزميات لإدارة تدفق الطلبات الواردة.
خوارزمية دلو الرموز
تدور خوارزمية دلو الرموز حول مفهومين:
- الرموز: الرموز هي "التصاريح" للوصول إلى واجهة برمجة التطبيقات
- الأدلاء: تحتفظ الأدلاء بعدد محدود من الرموز
في خوارزمية دلو الرموز، هناك عدد من المفاهيم التي يجب أن تتعرف عليها:
- سماحية الطلب: تُعرف أيضًا بتحديد المعدل، تحدد واجهة برمجة التطبيقات حد معدل يحدد عدد الرموز المضافة إلى الدلو لكل وحدة زمنية (على سبيل المثال: 10 رموز في الثانية).
- معالجة الطلب: عند استلام طلب، تتحقق واجهة برمجة التطبيقات من الدلو لمعرفة الرموز المتبقية. إذا كانت هناك رموز متاحة، سيتم إزالة عدد
نمن الرموز، وسيتم معالجة الطلب. - دلو فارغ، تباطؤ: إذا تم العثور على الدلو فارغًا أثناء معالجة الطلب، يتم تقييد الطلب. وهذا يعني أن التطبيقات ستحتاج إلى الانتظار حتى يتم إضافة عدد كافٍ من الرموز (استنادًا إلى حد المعدل) قبل إعادة المحاولة لتقديم طلب آخر.
قدرة الاندفاع
يمكن توسيع نموذج دلو الرموز بقدرة اندفاع؛ تسمح قدرة الاندفاع للدلو بحمل كمية إضافية من الرموز (تخيل وجود دلو أكبر قليلاً مع بعض الرموز المعبأة مسبقًا).
مع إضافة قدرة الاندفاع، يمكن للتطبيقات إرسال مجموعة من الطلبات التي تتجاوز حد المعدل لفترة قصيرة قبل أن يتم تقييدها. عادةً ما يتم تنفيذ ذلك لمعالجة الزيادة الكبيرة في حركة المرور.
تنفيذ تقييد واجهة برمجة التطبيقات
هناك مستويات مختلفة يمكن أن يتم تنفيذ تقييد واجهة برمجة التطبيقات عندها:
- مبني على عنوان IP: يحدد الطلبات القادمة من عنوان IP معين.
- مبني على مفتاح API: يستخدم مفاتيح API الفريدة لتحديد والتقييد على التطبيقات الفردية.
- مبني على المستخدم: تقييد استنادًا إلى حسابات المستخدمين للتحكم بدقة أكبر.
رموز الخطأ وإعادة المحاولة
عند تقييد طلب API، ستقوم واجهة برمجة التطبيقات عادةً بإرجاع رمز استجابة خطأ (مثال: 429 عدد الطلبات كثير جدًا). تتضمن التطبيقات المطورة بشكل جيد منطق إعادة المحاولة مع آليات التراجع، مما يجبر المستخدم على الانتظار لفترة أطول تدريجيًا قبل أن يتم تقييده.
مزايا تقييد واجهة برمجة التطبيقات
يوفر تقييد واجهة برمجة التطبيقات العديد من المزايا المهمة التي تضمن التشغيل السلس والمستقر لـ API لكل من المزودين والمستخدمين. إليك تفصيلًا لمزاياه الرئيسية:
1. الأداء والثبات:
- يمنع الحمل الزائد: يمكن أن تغمر أحجام الطلبات غير المنضبطة خادم واجهة برمجة التطبيقات، مما يؤدي إلى أوقات استجابة بطيئة أو حتى انقطاع الخدمة. يعمل تقييد واجهة برمجة التطبيقات كضمانة، مما يمنع الطلبات المفرطة من تعطيل النظام. يتمتع المستخدمون بأداء متسق حيث يمكن لواجهة برمجة التطبيقات التعامل مع الطلبات بكفاءة.
2. العدالة وإدارة الموارد:
- الوصول المتساوي: يضمن تقييد واجهة برمجة التطبيقات ألا يسيطر تطبيق أو مستخدم واحد على جميع موارد API. من خلال تحديد معدل الطلبات، يتم توزيع الوصول بشكل عادل بين جميع المستخدمين، مما يمنع القليل منهم من تقليل التجربة للآخرين.
3. قابلية التوسع والكفاءة:
- حمولة متوقعة: يساعد تقييد واجهة برمجة التطبيقات على التعامل مع أحمال متوقعة. من خلال تنظيم تدفق الطلبات، يمكن لمزود واجهة برمجة التطبيقات تحسين الموارد والبنية التحتية لأنماط الحركة المتوقعة. وهذا يسمح بالتوسع بشكل أكثر سلاسة عند زيادة الطلب.
4. الأمان:
- التخفيف من هجمات الحرمان من الخدمة: تهدف هجمات الحرمان من الخدمة (DoS) إلى إغراق النظام بالطلبات، مما يجعله غير متاح للمستخدمين الشرعيين. يمكن أن يساعد التقييد في التخفيف من هذه الهجمات من خلال تحديد وتقييد المعدلات المرتفعة غير الطبيعية للطلبات من مصدر واحد.
5. تحسين تجربة المستخدم:
- أوقات استجابة متسقة: من خلال منع الحمل الزائد، يضمن التقييد أن يتمتع المستخدمون بأوقات استجابة متسقة لطلبات واجهة برمجة التطبيقات الخاصة بهم. وهذا يترجم إلى تجربة أسرع وأكثر موثوقية لجميع المستخدمين المعتمدين على واجهة برمجة التطبيقات.
6. مراقبة صحة التطبيق:
- تحديد أنماط الاستخدام: يمكن تحليل بيانات التقييد لفهم أنماط الاستخدام وتحديد المشاكل المحتملة. على سبيل المثال، قد تشير معدلات التقييد المرتفعة للتطبيقات المحددة إلى فرص تحسين لتلك التطبيقات.
7. تشجيع الاستخدام المسؤول:
- يعزز الكفاءة: يشجع التقييد المطورين على تصميم تطبيقات تستخدم واجهة برمجة التطبيقات بشكل فعال. من خلال تحديد الطلبات، يتم تشجيع المطورين على تحسين الشيفرة الخاصة بهم وتجنب المكالمات غير الضرورية.
أمثلة على ترميز الجانب الخادم لتقييد واجهة برمجة التطبيقات
تظهر عينة كود بايثون أدناه تقييد واجهة برمجة التطبيقات باستخدام طريقة دلو الرموز.
class TokenBucket:
def __init__(self, capacity, refill_rate):
self.capacity = capacity # الحد الأقصى لعدد الرموز
self.tokens = capacity # العدد الحالي من الرموز
self.refill_rate = refill_rate # الرموز المضافة لكل وحدة زمنية
def get_token(self, current_time):
# يحاكي إعادة تعبئة الرموز بناءً على الوقت المنقضي
elapsed_time = current_time - self.last_refill_time
self.tokens = min(self.capacity, self.tokens + (elapsed_time * self.refill_rate))
self.last_refill_time = current_time
if self.tokens > 0:
self.tokens -= 1
return True
else:
return False
# مثال للاستخدام
bucket = TokenBucket(5, 1) # 5 رموز، إعادة تعبئة 1 كل ثانية
request_time = time.time() # الحصول على الوقت الحالي
if bucket.get_token(request_time):
# معالجة الطلب (تم حذف المنطق للاختصار)
print("الطلب مسموح!")
else:
print("الطلب مقيد، حاول مرة أخرى لاحقًا!")
شرح الكود:
- تمثل فئة
TokenBucketالدلو معcapacityوrefill_rate. - تفحص طريقة
get_tokenالوقت الحالي وتحاكي إعادة تعبئة الدلو بناءً على الوقت المنقضي ومعدل التعبئة. - إذا كانت هناك رمز متاحة (
tokensأكبر من 0)، تتم إزالة رمز واحد ويسمح بالطلب. - إذا كان الدلو فارغًا، يتم تقييد الطلب (مرفوض).
Apidog - اجعل الطلبات غير محدودة إلى واجهات برمجة التطبيقات
عندما تختبر واجهات برمجة التطبيقات لمراقبة استجابتها وأدائها، قد تحتاج بلا حدود إلى تقديم الطلبات. تقيّد معظم أدوات واجهة برمجة التطبيقات مستخدميها بعدد معين من الطلبات التي يمكنهم تقديمها يوميًا. ومع ذلك، مع Apidog، يمكنك الاستمرار في تقديم الطلبات إلى واجهة برمجة التطبيقات طالما أنه لم يتم الوصول إلى حد المعدل الخاص بـ API.

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

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

بعد ذلك، يمكنك تحديد العديد من خصائص واجهة البرمجة. في هذه الصفحة، يمكنك:
- تحديد الطريقة HTTP (GET، POST، PUT، أو DELETE)
- تحديد عنوان URL لواجهة البرمجة (أو نقطة نهاية واجهة البرمجة) لتفاعل العميل والخادم
- تضمين معلمة واحدة/عدة معلمات سيتم تمريرها في عنوان URL لواجهة البرمجة
- تقديم وصف لما تهدف واجهة برمجة التطبيقات إليه. هنا، يمكن أيضًا وصف حد المعدل الذي تخطط لتنفيذه على واجهة البرمجة الخاصة بك.
كلما زادت التفاصيل التي يمكنك تقديمها في مرحلة التصميم، كانت وثائق واجهة برمجة التطبيقات الخاصة بك أكثر وصفًا، كما هو موضح في القسم التالي من هذه المقالة.
لتقديم بعض المساعدة في إنشاء واجهات برمجة التطبيقات في حال كانت هذه هي المرة الأولى التي تقوم بذلك، يمكنك التفكير في قراءة هذه المقالات.



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

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

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

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

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