الـ APIs — كيف تتحدث البرامج فيما بينها
حين يريد تطبيق إنستغرام على هاتفك تحميل خلاصتك، فإنه لا يطلب بالإنجليزية المبسّطة. بل يطلب بصيغة محدّدة متّفق عليها. ويجيب الـ server بصيغة محدّدة متّفق عليها. ذلك الاتفاق هو الـ API.
الـ API (Application Programming Interface) عقد بين برنامجين: اطلب مني بهذه الطريقة المحدّدة، وأعِدُك بأن أجيب بهذه الطريقة المحدّدة.
إن كان «frontend وbackend» هو الانقسام، و«client وserver» هما المحادثة، فإن الـ API هو اللغة التي يتحدثان بها.
النقطة التي تربك الناس عادةً
الـ API ليس شيئًا يمكنك الإشارة إليه. ليس ملفًا، ولا server، ولا برنامجًا. إنه اتفاق — مجموعة الأسئلة التي يستطيع برنامج طرحها على آخر، وشكل الإجابات التي سيتلقّاها.
لهذا يقول الناس أشياء مثل «بنينا API» أو «تلك الخدمة تكشف API.» وما يقصدونه: «ها هي قائمة الأسئلة التي يمكنك طرحها علينا، والصيغة التي سنجيب بها.»
إن كان المطعم هو الـ server، فإن الـ API هو قائمة الطعام. لا يمكنك طلب أيّ شيء ليس في القائمة. وكل ما في القائمة يمكنك طلبه، وتعرف بالضبط ما الذي سيصلك.
كيف يبدو نداء الـ API
إليك نسخة مبسّطة مما يفعله هاتفك في الخلفية، كل ثانية تستخدم فيها تطبيقًا:
Request: GET https://api.instagram.com/feed?user=you
Response: { "posts": [ { "id": 1, "image": "...", "likes": 42 }, ... ] }
يقول الـ request «أعطني خلاصة هذا المستخدم.» وتأتي الـ response على هيئة JSON — وهي صيغة ما هي إلا نصّ مُشكَّل على هيئة قوائم وتسميات متداخلة. يقرأ هاتفك الـ JSON، ويحوّله إلى الخلاصة الجميلة القابلة للتمرير التي تراها.
لست بحاجة إلى كتابة JSON بنفسك بعد. فقط تعرّف على الشكل — أقواس متعرّجة، وعلامات اقتباس، ونقطتان رأسيتان. سترى هذا باستمرار حين تقرأ الكود مع Claude.
لماذا الـ APIs في كل مكان
حالما يستطيع برنامج أن يطلب من برنامج آخر أشياء، يمكنك بناء برمجيات ضخمة من قطع صغيرة. التطبيق الحقيقي الذي تستخدمه قد يكون:
- الـ API الخاص بتطبيقك لأشياء مثل تسجيل الدخول والنشر.
- API الخاص بـ Stripe لخصم المبلغ من بطاقتك.
- API الخاص بخرائط غوغل لعرض خريطة.
- API الخاص بـ OpenAI لـ feature ذكاء اصطناعي.
- API الخاص بـ Twilio لإرسال رسالة نصية قصيرة.
خمس شركات مختلفة، وخمسة APIs مختلفة، وشاشة واحدة على هاتفك. كلٌّ منها عقد: «اطلب مني بهذه الطريقة، واحصل على هذا في المقابل.» لا أحد يكتب كل ذلك من الصفر — بل يربطون الـ APIs بعضها ببعض.
الـ Claude API بهذا الشكل تمامًا. حين تستخدم claude.ai أو Claude Code، فإن التطبيق الذي تستخدمه هو client للـ Claude API من Anthropic. النمط ذاته كأيّ شيء آخر.
«endpoint» — الكلمة التي ستسمعها
الـ endpoint هو سؤال محدّد واحد يستطيع الـ API الإجابة عنه. والـ API الكبير له endpoints كثيرة:
GET /feed— احصل على الخلاصة.POST /like— أعجِب بمنشور.GET /user/42— احصل على تفاصيل المستخدم رقم 42.DELETE /post/99— احذف المنشور رقم 99.
كلٌّ منها باب مختلف إلى المبنى ذاته. حين يقول Claude «هذا التطبيق ينادي الـ endpoint المسمّى /users/me حين تسجّل الدخول»، صرت الآن تعرف معنى تلك الجملة.
ما التالي
تتيح الـ APIs للبرامج أن تطرح أسئلة على بعضها. لكن الكثير من تلك الأسئلة هو في الحقيقة «ماذا تتذكّر عن س؟» — وكي تتذكّر الأشياء، تحتاج البرمجيات إلى مكان تضعها فيه. ذلك المكان database.