Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 11

مقدمة إلى واجهات برمجة التطبيقات (APIs) وبروتوكول HTTP

Recommended resources

أهلاً بك مجدداً في رحلتنا لبناء وكلاء الذكاء الاصطناعي.

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

درس اليوم هو الجسر الذي سيربط برنامجك البسيط بالعالم الرقمي الواسع. سنتناول هدفين رئيسيين:

  1. فهم مفهوم واجهات برمجة التطبيقات (APIs): ما هي، ولماذا هي ضرورية جداً في عالم اليوم؟
  2. فهم بروتوكول HTTP: ما هي القواعد التي تحكم كيفية "تحدث" البرامج مع بعضها البعض عبر الإنترنت؟

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


1. ما هي واجهة برمجة التطبيقات (API)؟ تشبيه النادل

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

كيف تطلب طعامك؟ لا يمكنك اقتحام المطبخ والصراخ بطلبك؛ فهذا سيسبب فوضى، كما أنك لا تعرف "لغة المطبخ". هنا يأتي دور النادل.

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

  • يقدم لك قائمة طعام محددة (هذا هو توثيق الـ API الذي يخبرك بما يمكنك طلبه).
  • يأخذ طلبك المنظم (هذا هو الطلب - Request الذي ترسله).
  • يذهب إلى المطبخ ويوصل طلبك "بلغتهم" الخاصة.
  • يعود لك بالطبق جاهزاً ومنسقاً (هذه هي الاستجابة - Response التي تستقبلها).

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

ما هي واجهة برمجة التطبيقات (API)؟ شرح مفصل للمبتدئين

يقدم هذا المقال الرائع من موقع "قتيبة الشيحاني" شرحاً مفصلاً لهذا التشبيه. قراءة هذا الجزء ستمنحك أساساً قوياً لفهم فلسفة الـ API.

اقرأ من بداية المقال حتى تصل إلى عنوان "لغة الـ API: كيف يتحدث النادل مع المطبخ؟". ركز على فهم دور كل من: أنت (الواجهة الأمامية). المطبخ (الواجهة الخلفية). النادل (الـ API) كوسيط يحل مشكلتي التعقيد والأمان.



2. كيف يتواصل "النادل"؟ بروتوكول HTTP

حسناً، فهمنا أن الـ API هو الوسيط. لكن ما هي اللغة أو القواعد التي يستخدمها هذا الوسيط للتواصل؟ هذه اللغة هي بروتوكول نقل النص التشعبي (HTTP - Hypertext Transfer Protocol).

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

ما هو ال API؟ وليه هو مهم؟

يقدم هذا الفيديو القصير من قناة Karak Code نظرة عامة ممتازة تربط بين فكرة الحاجة إلى بيانات خارجية، ودور الخادم، وكيف يعمل الـ API كوسيط يستخدم بروتوكول HTTP.

شاهد المقاطع التالية من الفيديو: من البداية حتى الدقيقة 01:34: لفهم الحاجة إلى الخادم ودور الـ API. من الدقيقة 02:26 حتى 03:20: للتعرف على HTTP كلغة للتواصل.

جوهر عمل HTTP بسيط للغاية ويقوم على دورة الطلب والاستجابة (Request-Response Cycle):

  1. العميل (Client): برنامجك، يرسل طلب HTTP.
  2. الخادم (Server): الخدمة التي تتواصل معها، تستقبل الطلب وتعالجه.
  3. الخادم (Server): يرسل استجابة HTTP مرة أخرى إلى العميل.
طرق HTTP الأساسية والتفاعل بين العميل والخادم
هذه الصورة تلخص دورة الطلب والاستجابة. العميل (برنامجنا) يرسل طلباً باستخدام طرق HTTP (مثل GET أو POST)، والخادم يرد باستجابة تحتوي على البيانات المطلوبة، غالباً بتنسيق JSON.


3. تشريح محادثة HTTP

دعنا نتعمق قليلاً في مكونات هذه "المحادثة" بين العميل والخادم.

أ. الطلب (The Request)

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

  1. الرابط (URL) ونقطة النهاية (Endpoint): هذا هو العنوان الدقيق الذي ترسله إليه. تماماً كما أن للمطعم عنوان، فإن لكل وظيفة داخل الـ API "نقطة نهاية" خاصة بها.

    • https://api.weather.com/v1/current?city=Riyadh
    • هنا، /v1/current هي نقطة النهاية المسؤولة عن إعطاء الطقس الحالي.
  2. الفعل (HTTP Method/Verb): يحدد نية طلبك. الأفعال الأكثر شيوعاً هي:

    • GET: "أحضر لي". يستخدم لجلب البيانات (مثل طلب حالة الطقس).
    • POST: "خذ هذا وأنشئ شيئاً جديداً". يستخدم لإرسال بيانات لإنشاء مورد جديد (مثل نشر تغريدة جديدة أو تسجيل مستخدم جديد).
    • PUT / PATCH: "خذ هذا وعدّل شيئاً موجوداً".
    • DELETE: "احذف هذا".
  3. الترويسات (Headers): معلومات إضافية تصف الطلب. مثل ملاحظات إضافية للنادل.

    • Accept-Language: ar: "أفضل أن تكون الاستجابة باللغة العربية".
    • Authorization: Bearer <API_KEY>: "هذه هي بطاقة عضويتي السرية (مفتاح الـ API) التي تثبت أنني مصرح لي بالطلب". سنتحدث عن مفاتيح API لاحقاً.
  4. المتن (Body): "محتوى الرسالة" نفسه. يستخدم بشكل أساسي مع طلبات POST و PUT لإرسال البيانات. على سبيل المثال، عند إنشاء مستخدم جديد، ستحتوي "المتن" على بيانات المستخدم (اسمه، بريده الإلكتروني، إلخ) بتنسيق JSON.

ب. الاستجابة (The Response)

عندما يرد الخادم، تكون استجابته منظمة أيضاً:

  1. رمز الحالة (Status Code): رقم من ثلاث خانات يخبرك بنتيجة طلبك بسرعة.

    • 2xx (نجاح):
      • 200 OK: "تفضل، هذا هو طلبك".
    • 4xx (خطأ من العميل):
      • 401 Unauthorized: "ليس لديك الصلاحية للقيام بهذا الطلب".
      • 404 Not Found: "لم أجد ما طلبته. العنوان (نقطة النهاية) غير صحيح".
    • 5xx (خطأ من الخادم):
      • 500 Internal Server Error: "حدث خطأ في المطبخ! حاول مرة أخرى لاحقاً".
  2. المتن (Body): البيانات الفعلية التي طلبتها، وعادةً ما تكون بتنسيق JSON الذي تدربنا عليه في الدرس السابق!

ما هي واجهة برمجة التطبيقات (API)؟ شرح مفصل للمبتدئين

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

اقرأ الآن قسمي "لغة الـ API: كيف يتحدث النادل مع المطبخ؟" و "لغة البيانات: تنسيق JSON". ركز على: كيف ترتبط أفعال HTTP (GET, POST) بطلبك من النادل. كيف تمثل رموز الحالة (200, 404) ردود النادل المختلفة. لماذا يعتبر JSON هو التنسيق المثالي لـ "الطبق" الذي يقدمه النادل.

اختبر فهمك!

تخيل أنك تريد بناء برنامج صغير يعرض "حقيقة عشوائية عن القطط" من API عام. بناءً على ما تعلمته، صف مكونات طلب HTTP الذي سيرسله برنامجك. فكر في:

  1. ما هو الفعل (Method) الأنسب الذي ستستخدمه؟
  2. هل تتوقع أن يحتوي طلبك على متن (Body)؟ ولماذا؟
أظهر الإجابة
  1. الفعل (Method): سيكون GET، لأننا نطلب (نجلب) بيانات موجودة من الخادم، ولا نرسل بيانات لإنشاء شيء جديد.
  2. المتن (Body): لا، الطلب لن يحتوي على متن. طلبات GET عادةً لا تحتاج إلى متن لأن كل المعلومات اللازمة لتحديد المورد المطلوب تكون موجودة في الرابط (URL) والترويسات (Headers). نحن فقط نطلب بيانات، لا نرسل بيانات.


ملخص الدرس وأهم النقاط

لقد قطعنا شوطاً نظرياً مهماً اليوم، وهو أساس كل تفاعلاتنا المستقبلية مع الخدمات عبر الإنترنت.

أهم النقاط التي استخلصناها:

  • API هو الوسيط (النادل) الذي يسمح للبرامج بالتحدث مع بعضها البعض بشكل منظم وآمن.
  • HTTP هو البروتوكول (لغة التواصل) الذي يستخدمه الـ API، ويعتمد على دورة طلب واستجابة.
  • الطلب (Request) يتكون من: رابط (URL)، وفعل (Method) مثل GET أو POST، وترويسات (Headers)، وأحياناً متن (Body).
  • الاستجابة (Response) تتكون من: رمز حالة (Status Code) يوضح النتيجة، ومتن (Body) يحتوي على البيانات المطلوبة (غالباً بتنسيق JSON).

ما التالي؟

الآن بعد أن فهمنا نظرية كيفية عمل الـ API و HTTP، حان وقت التطبيق. في الدرس القادم، سننتقل من النظرية إلى الواقع، وسنكتب أول برنامج بايثون يستخدم مكتبة requests لإرسال طلب HTTP حقيقي إلى واجهة برمجة تطبيقات (API) على الإنترنت، وسنستقبل الاستجابة ونطبعها على شاشتنا. استعد للانتقال من فهم المفاهيم إلى استخدامها فعلياً