تعريف الـ API
واجهة برمجة التطبيقات أو Application Programming Interface هي عبارة عن مبدأ وليست لغة برمجة. ويطلق على كل ما يتم تحويله من أوامر معقدة إلى أوامر بسيطة يستطيع أي شخص استخدامها بـ ( API ) .فنظام الويندوز نفسه عبارة عن ( API ) وأيضاً لغات البرمجة هي الأخري عبارة عن ( API ).
مثلاً أنت كشخص عادي تستخدم نظام الويندوز وتريد حرق اسطوانة, فأنت تقوم بوضع الاسطوانة ثم تستخدم أي برنامج للحرق وتضغط على زر Burn لتبدأ عملية الحرق. لكن لا يهمك ما الذي يحدث في كواليس الأمر Burn. وفي الحقيقة يحدث عمليات معقدة جداً يصعب عليك فهمها وإلا احتجت لقراءة مواضيع برمجية كثيرة وهذا في النهاية قد لا يهمك فأنت تريد فقط حرق اسطوانة.
أنواع الـ APIهناك نوعان من واجهات برمجة التطبيقات ( API )
أولاً : نوع يعتمد على لغة البرمجة
بناءً على ويكيبيديا فهو متاحُُ فقط في لغة برمجة معينة، ويقوم على استخدام syntax وعناصر هذه اللغة لجعله ملائما للاستخدام في هذا السياق.
بمعنى أنه تم تجميع مجموعة من الأوامر والوظائف بصيغة اللغة نفسها في كود معين وجميعها تندرج تحت اسم أو هيكل ثابت يمكن استخدامه بمجرد كتابة جملة كودية واحدة دون الحاجة للإهتمام بالأوامر والوظائف الداخلية.
ثانياً : نوع مستقل عن لغة البرمجة
ويتضح من العنوان أنه لا يحتاج أن يكتب بصيغة لغة برمجة معينة وإنما يكتب بشكل تستطيع فهمه معظم لغات البرمجة. فإن كانت لديك فكرة أو مقدمة عامة عن البرمجة فلابد أنك تعلم أن جميع لغات البرمجة يتم ترجمتها في النهاية إلى لغة التجميع ( ASSEMBLY LANGUAGE ) . ومن هذا المبدأ يتم تصميم هذا النوع من الـ ( APIs ) بلغة التجميع Assembly . ويستخدم هذا النوع في خدمات الويب ( WEB SERVICES ) التي تسمح لأكثر من نظام بالتواصل مع بعض بغض النظر عن لغة البرمجة المستخدمة.
من وجهة نظر مستخدم عادييمكنك نشبيهها بشباك بيع المأكولات السريعة، تقف أمام الشباك و تطلب الطعام الذي تريد من القائمة المتوفرة, وكل ما يمكنك فعله هو طلب الطعام الجاهز المتوفر الذي يناسبك و أخذه، أما وصفات التحضير و قائمة الخضروات و اللحم الموجود في الثلاجة فهذا ليس من شأنك أن تعرفه و لا يمكنك الوصول إليه.
الـ ( API ) هي موجهه للمطورين لتمكينهم من الاستفادة من مميزات نظام معين لتطوير نظام اخر خاص بهم، كيف ؟
لنفترض ان جهة ما قامت بتطوير نظام معين ( سواء كان موقع على الويب او نظام تشغيل او تطبيق اندرويد او اياً كان المهم انه نظام برمجي) ثم طرحت هذا النظام في السوق، هذا النظام بطبيعة الحال يقدم خدمات معينة، عندما توفر هذه الجهة صاحبة هذا النظام واجهة برمجية ( API ) فهذا يعني انها تتيح (للمطورين) الاستفادة من بعض خدمات هذا النظام لبناء برامجهم الخاصة.
امثله :
موقع الفيسبوك يوفر ( API ) تسمح بجلب بيانات المستخدم مثل اسمه، وصورته والعمر … الخ، كمطور لو كنت بصدد بناء موقع فيه جزئية التسجيل فبدل ان اقوم ببناء نموذج يقوم الشخص بتعبئه حقول كثيرة، يمكنني الاستفادة من ( API ) الفيسبوك وجلب بيانات المستخدم بسهولة، هذا سيوفر علي وقت وجهد، وهذا تستخدمه مواقع كثيرة. مثال اخر لو كنت بصدد برمجة نظام يعمل على Windows واحتجت الى تنفيذ امر لمعرفة كم حجم الذاكرة العشوائية RAM ، هنا انت لست بحاجة لكتابة اوامر طويلة للوصول للذاكرة العشوائية ومعرفة كم حجمها، فقط تحتاج الى استخدام ( API ) خاص بنظام التشغيل وندوز وهو سيجلب لك هذه المعلومة. لو انت بصدد بناء برنامج فيه جزئية متعلقه بالخرائط، هنا خرائط قوقل توفر ( API ) يمكن الاستفادة منه وبناء نظامك الخاص بالاستفادة من خرائط قوقل. لنفرض أنني أملك موقعا عالميا يهتم بإحصائيات المناخ لكل مدن العالم و هذا الموقع يوفر ( API ) تسمح بالوصول لمعلومات المناخ لأي مدينة تريد ، و أنت لديك موقع يهتم بأحوال الطقس في مدن بلدك فقط. في هذه الحالة ستستعمل ( API ) التي يوفرها موقعي للحصول على معلومات المدن التي في بلدك و تضعها في موقعك أو تطبيقك.في النهاية نستطيع القول بأن واجهة برمجة التطبيقات ( API ) هي غلاف لتغليف شئ صعب من الداخل وجعله سهل من الخارج.