واجهة برمجة التطبيقات
الخدمة (Service): هي أن يتم تشغيل البرمجيَّة على جهاز مستضيف لها (الخادم - Server) ومتصل بالشبكة (الإنترنت غالبًا)؛ بحيث يمكن للبرمجيَّات الأخرى (تسمى عملاء: Clients) التواصل معها عن طريق واجهة برمجة التطبيقات (API).
مثال البرمجيّات المقدمة كخدمة بواجهة برمجية:
- خدمة Open-Meteo: للحصول على توقعات الأرصاد الجويَّة ومعرفة حالة الطقس.
- خدمة Stripe API: لدمج الدفع في البرامج، مثل تحصيل ثمن مشتريات.
- خدمة Twilio API: لإرسال الرسائل النصية من البرنامج، مثل تذكير العميل بموعد حجزه.
- خدمة AssemblyAI API: لتحويل التسجيلات الصوتية إلى نصوص، مثل تفريغ مقابلة أو محاضرة.
- خدمة Google Calendar API: لإنشاء المواعيد وإدارتها من البرنامج، مثل إضافة موعد الحجز إلى تقويم المستخدم.
- خدمة OpenAI: تتيح استخدام نماذجها لتوليد النصوص وتحليل الصور ومعالجة الصوت داخل تطبيقك.
وعادة ما توفِّر الخدمة موقعًا لتسجيل حساب وتفعيل اشتراك وإنشاء مفتاح الواجهة البرمجية (API Key) لربط الطلبات بصاحب الحساب؛ لتتم خدمته بمقابل مالي، ويرتبط به سجلُّ خاص، ليتم متابعة العملاء وتحليل بياناتهم لاستهدافهم بشكل أدق.
في هذا الدرس نتعلم كيف نتواصل مع مثل هذه الخدمات.
الرابط في عصر تطبيقات الويب
تمَّ إعادة النظر في شبكة الإنترنت من جهة كون الأشياء المطلوبة فيها ليست مجرَّد صفحات، بل أحد أمرين:
- موارد: كالصفحة، والعنصر
- عمليات: أن تطلب معالجة ما بمعطيات معيَّنة (يتم إسنادُها لجهازٍ ما عن بُعد)
فأصبح لدينا بذلك خادمٌ ومخدوم. وصارت المعالجة نفسها تباع وتشترى؛ لا المعلومات المخزنة وحسب.

الحاجة لواجهات برمجية
حتى تتواصل البرمجيات وتقدِّم خدماتها لبعضها البعض وتتخادَم، طوَّر المبرمجون آلية للتواصل سموها: واجهات برمجة التطبيقات (APIs)، لأن مصطلح الواجهة -في البرمجة- يعني: الشيء الذي يراه ويتعامل معه المستفيد:
- فأما واجهة المستخدم البشري فتسمى: User Interface - UI
- وأما واجهة التطبيقات البرمجية فتسمى: Application Programming Interface - API
والواجهة هي لغة التواصل بين طرفين:
- العميل (Client): هو البرنامج الذي يريد الاستفادة من الخدمة المقدَّمة.
- الخادم (Server): هو البرنامج الذي يستقبل الطلب ويعالجه ويعيد النتيجة.
نقطة الاتصال (Endpoint)
نقاط الاتصال (Endpoints) تقابل المسار الذي يحدد أين هي الصفحة الإلكترونية؛ لكن في التطبيقات لدينا أمران:
- مسار المورد (Resource) حيث يكون المسار يوصلك إلى كائن (ذو اسم وصفات محددة).
- مسار العملية (Operation) حيث يكون المسار يوصلك إلى عملية (دالة أو إجراء أو برنامج).
وهذا مثل المكتبات البرمجيَّة؛ أمور يحددها الخادم عادة، ويتقيَّد بها العميل ليستفيد من هذه الخدمات. لذلك تتفاوَت في حُسن التقسيم، وسهولة الاستخدام.
أولاً: مسار المورد
مثال استخدام واجهة ummahapi البرمجية.
فإذا ما نسخت الرابط وأدخلته في المتصفح، رجع إليك الخادم بالنتيجة نصًّا بصيغة JSON هكذا:
نريد إرسال هذا الطلب من بايثون مباشرة، وسنستخدم لذلك حزمة requests.
تثبيت الحزمة
نفترض أنك ثبّتَّ بايثون على جهازك من موقعه الرسمي. افتح الطرفية (Terminal)، مثل PowerShell في ويندوز أو Terminal في macOS، ونفّذ الأمر التالي:
ينزّل الأمر السابق حزمة requests من مستودع حزم بايثون (PyPI) ويثبّتها على جهازك باستخدام pip. إذا كان أمر بايثون على جهازك هو python3، فاستخدمه بدل python في الأمر السابق. نفّذ أمر التثبيت في الطرفية، ثم استورد الحزمة داخل برنامج بايثون.
استيراد الحزمة
خريطة سطح المكتبة من توثيق Requests:
إرسال الطلب وقراءة الجواب json
ثانياً: مسار العملية
لاحظ أن المسار التالي يوصلك إلى عمليَّة محددة هي timingsByCity أي: الأوقات بحسب المدينة. ويتمُّ بعدها تحديد الزمن (أيضًا داخل المسار). ثم بعد ذلك يتم تعيين معطيات أخرى لهذه العملية بأسلوب القيَم المسمَّاة؛ اسم وقيمة، اسم وقيمة.
ويكون إرسال الطلب من بايثون هكذا:
وإذا أدخلت ذلك الرابط في المتصفح، فإنه سيرجع لك بالنتيجة نصًّا بصيغة JSON هكذا:
واجهة الوكلاء (MCP)
مؤخرًا طُوِّرَت آليات لتواصل وكلاء الذكاء الاصطناعي مع البرمجيات، توازي (API)، وهي كثيرة؛ لكننا نختصر لك ما استقر عليه الأمر -حتى الآن- وهو بروتوكول MCP. فإذا أردت ربط الذكاء الاصطناعي بموقعٍ ما فابحث عن MCP له.