ما هي واجهة البرمجيات API
ربما في عالم البرمجة والكمبيوتر تسمع كثيراً بعبارة (API ) فما هي هذه التقنية ولماذا تم ايجادها في عالم البرمجة ؟ المصطلح (API ) هو اختصار، وهو يرمز إلى “Application Programming Interface”. أي الواجهة البرمجية للتطبيق، انظر لها كقائمة في مطعم، توفر قائمة بالأطباق التي يمكنك طلبها، بالإضافة إلى وصف لكل طبق
ربما في عالم البرمجة والكمبيوتر تسمع كثيراً بعبارة (API ) فما هي هذه التقنية ولماذا تم ايجادها في عالم البرمجة ؟ المصطلح (API ) هو اختصار، وهو يرمز إلى “Application Programming Interface”. أي الواجهة البرمجية للتطبيق، انظر لها كقائمة في مطعم، توفر قائمة بالأطباق التي يمكنك طلبها، بالإضافة إلى وصف لكل طبق. عند تحديد عناصر من هذه القائمة، يقوم مطبخ المطعم بالعمل ويقدم لك بعض الأطباق الجاهزة، أنت لا تعرف بالضبط كيف يقوم المطعم بإعداد هذا الطعام، ولا تحتاج الى أن تعرف ذلك حقًا.
وبالمثل، تعرض الواجهة البرمجية للتطبيق (API) مجموعة من العمليات التي يمكن للمطورين استخدامها، بالإضافة إلى وصف لما يفعلونه. لا يحتاج مطور البرامج بالضرورة إلى معرفة كيف يقوم نظام تشغيل، على سبيل المثال، بإنشاء مربع حوار “حفظ باسم” وتقديمه، يحتاجون فقط إلى معرفة أنه متاح للاستخدام في تطبيقهم.
هذه ليست استعارة مثالية، فقد يضطر المطورون إلى تقديم بياناتهم الخاصة إلى API للحصول على النتائج، لذلك ربما يكون الأمر أشبه بمطعم فاخر، حيث يمكنك تقديم بعض المكونات التي سيعمل بها المطبخ. تتيح واجهات برمجة التطبيقات للمطورين توفير الوقت من خلال الاستفادة من تنفيذ النظام الأساسي للقيام بالعمل الدقيق، ويساعد ذلك في تقليل عدد مطوري التعليمات البرمجية الذين يحتاجون إلى إنشائها، ويساعد أيضًا في إنشاء المزيد من التناسق عبر التطبيقات لنفس النظام الأساسي، كما يمكن لواجهات برمجة التطبيقات التحكم في الوصول إلى موارد الأجهزة والبرامج.
ومن هنا يمكننا تعريف الـ (API) علي انها وصف العناصر البرمجية حسب وظائفها ومدخلاتها ومخرجاتها , الهدف الرئيسي منها توفير قائمة من الوظائف المستقلة تماماً عن الآلية التي نفّذت بها , لتتيح للأخرين التواصل معها من خلال أي آلية أخرى.
استخدامات API
ولنفترض أن جهة ما قامت بتطوير نظام معيّن سواء كان موقع على الويب أو نظام التشغيل أو تطبيق أندرويد أو أياً كان (نظام برمجي مثلاً) ثم طرحت هذا النظام في السوق , هذا النظام بطبيعة الحال يقدم خدمة معينة , عندما توفر هذه الجهة صاحبة هذا النظام واجهات برمجة التطبيقات تلك فهذا يعني أنها تتيح للمطورين الاستفادة من بعض خدمات هذا النظام لبناء برامجهم الخاصة .
وسنطرح ايضاً بعض الامثلة لمزيد من التوضيح:
مثال (1)
موقع فيسبوك يوفر واجهات برمجة التطبيقات التي تسمح بجلب بيانات المستخدم مثل اسمه , وصورته والعمر … الخ , كمطور لو كنت بصدد بناء موقع فيه جزئية التسجيل فبدل أن تقوم ببناء نموذج يقوم الشخص بتعبئة حقول كثيرة , يمكنك الاستفادة من واجهات فيسبوك وجلب بيانات المستخدم بسهولة , هذا سيوفر وقت وجهد , وهذا تستخدمه مواقع كثيرة.
مثال (2)
لو كنت بصدد بناء برنامج فيه جزئية متعلقة بالخرائط هنا خرائط جوجل توفر واجهات برمجة التطبيقات التي يمكن الاستفادة منها وبناء نظامك الخاص بالاستفادة من خرائط جوجل.
مثال (3)
واجهات برمجة التطبيقات (API) تجعل حياة المطوريين أسهل. لنفترض أنك تريد تطوير تطبيق لجهاز (iPhone)، يوفر نظام التشغيل (iOS) من (Apple) عددًا كبيرًا من واجهات برمجة التطبيقات، كما يفعل كل نظام تشغيل آخر، لتسهيل الأمر عليك. إذا كنت ترغب في تضمين متصفح ويب لعرض صفحة ويب واحدة أو أكثر، على سبيل المثال، لن تحتاج إلى برمجة متصفح الويب الخاص بك من الصفر من أجل التطبيق الخاص بك، يمكنك استخدام (WKWebView API) لتضمين كائن مستعرض (Web Kit Safari) في التطبيق الخاص بك.
وإذا كنت تريد التقاط صور أو فيديو من كاميرا جهاز (iPhone)، فلن تضطر إلى كتابة واجهة الكاميرا الخاصة بك، أنت تستخدم واجهة برمجة تطبيقات الكاميرا لتضمين الكاميرا المدمجة في جهاز (iPhone) في تطبيقك، إذا لم تكن واجهات برمجة التطبيقات موجودة لجعل هذا الأمر سهلًا، فسيتعين على مطوري التطبيقات إنشاء برنامج كاميرا خاص بهم وتفسير مدخلات جهاز الكاميرا، ولكن مطوري نظام التشغيل في (Apple) قاموا بكل هذا العمل الشاق حتى يتمكن المطورون من استخدام واجهة برمجة تطبيقات الكاميرا لتضمين كاميرا، ثم البدء في بناء التطبيق الخاص بهم، وعندما تطور (Apple) واجهة برمجة تطبيقات الكاميرا، ستستفيد جميع التطبيقات التي تعتمد عليها من هذا التحسين تلقائيًا.
هذا ينطبق على كل نظام تشغيل على سبيل المثال، هل تريد إنشاء مربع حوار على (Windows)؟ هناك واجهة برمجة تطبيقات لذلك، هل تريد دعم مصادقة بصمة الإصبع على نظام (Android)؟ هناك أيضًا واجهة برمجة تطبيقات لذلك، لذا لن تضطر إلى اختبار كل مستشعر بصمة الإصبع لمنتج (Android) مختلف، إذ لا يضطر المطوّرون إلى إعادة اختراع المستشعر مرات ومرات.
التحكم في الوصول إلى الموارد عن طريق (API)
تستخدم أيضًا واجهات برمجة التطبيقات للتحكم في الوصول إلى الأجهزة ووظائف البرامج التي قد لا يكون لدى التطبيق بالضرورة إذنًا لاستخدامها، لهذا السبب تلعب واجهات برمجة التطبيقات دورًا كبيرًا في مجال الأمان.
على سبيل المثال، إذا كنت قد زرت موقعًا على الويب ورأيت رسالة في متصفحك تفيد بأن موقع الويب يطلب معرفة موقعك الدقيق، فإن موقع الويب هذا يحاول استخدام واجهة برمجة التطبيقات للموقع الجغرافي في متصفح الويب لديك، تعرض مستعرضات الويب واجهات برمجة التطبيقات مثل هذه لجعل من السهل لمطوري الويب الوصول إلى موقعك، يمكنهم فقط السؤال “أين أنت؟” ويقوم المتصفح بالعمل للوصول إلى (GPS) أو شبكات (Wi-Fi) المجاورة للعثور على موقعك الفعلي.
ومع ذلك، تعرض المتصفحات أيضًا هذه المعلومات عبر واجهة برمجة التطبيقات لأنه من الممكن التحكم في الوصول إليها. عندما يريد أحد مواقع الويب الوصول إلى موقعك الفعلي بالضبط، فإن الطريقة الوحيدة للحصول عليه هي عبر واجهة برمجة التطبيقات للموقع، وعندما يحاول أحد مواقع الويب استخدامها، يمكنك – أي المستخدم- اختيار السماح بهذا الطلب أو رفضه، الطريقة الوحيدة للوصول إلى موارد الأجهزة مثل مستشعر (GPS) هي من خلال واجهة برمجة التطبيقات، بحيث يمكن للمتصفح التحكم في الوصول إلى الأجهزة وتحديد ما يمكن أن تقوم به التطبيقات.
يستخدم هذا المبدأ نفسه في أنظمة تشغيل الهواتف المحمولة الحديثة مثل (iOS, Android)، حيث تمتلك تطبيقات الجوّال أذونات يمكن فرضها من خلال التحكم في الوصول إلى واجهات برمجة التطبيقات، على سبيل المثال، إذا حاول أحد المطورين الوصول إلى الكاميرا عبر واجهة برمجة تطبيقات الكاميرا، فيمكنك رفض طلب الإذن، وليس لدى التطبيق أي طريقة للوصول إلى كاميرا جهازك.
تمتلك أنظمة الملفات التي تستخدم الأذونات – كما تفعل في أنظمة التشغيل (Windows, Mac, Linux) – تلك الأذونات التي تفرضها واجهة برمجة التطبيقات لنظام الملفات، ولا يمتلك التطبيق النموذجي إمكانية الوصول المباشر إلى القرص الثابت الفعلي، بدلاً من ذلك، يجب على التطبيق الوصول إلى الملفات من خلال واجهة برمجة التطبيقات.
تستخدم (API) للاتصال بين الخدمات المختلفة
يتم استخدام واجهات برمجة التطبيقات للاتصال بين الخدمات، على سبيل المثال، إذا كنت قد رأيت خرائط (Google) مضمنةً على موقع ويب ما، فإن هذا الموقع يستخدم (API) لخرائط (Google) لتضمين هذه الخريطة في هذا الموقع، إذ يعرض (Google) واجهات برمجة التطبيقات مثل هذه لمطوري الويب الذين يمكنهم بعد ذلك استخدام واجهات برمجة التطبيقات على موقعهم الويب. إذا لم تكن واجهات برمجة التطبيقات مثل هذه موجودة، فقد يضطر المطورون إلى إنشاء خرائطهم الخاصة وتقديم بيانات الخرائط الخاصة بهم فقط لوضع خريطة تفاعلية صغيرة على موقع الويب.
ولأنها واجهة برمجة تطبيقات، يمكن لـ (Google) التحكم في الوصول إلى خرائط (Google) على مواقع الويب التابعة لجهات خارجية، وضمان استخدامها بطريقة متسقة بدلاً من محاولة تضمين إطار يعرض موقع ويب خرائط (Google) على سبيل المثال.
ينطبق هذا على العديد من الخدمات المختلفة عبر الإنترنت؛ فهناك واجهات برمجة التطبيقات لطلب ترجمة نصية من خدمة الترجمة من (Google)، أو تضمين تعليقات على (Facebook) أو تغريدات من (Twitter) على موقع ويب.
انواع الـ (API)
1- أحدهما يعتمد على لغة البرمجة ؛ بمعنى أنه متاحٌ فقط في لغة برمجة معينة.
بمعنى أنه تم تجميع مجموعة من الأوامر والوظائف بصيغة اللغة نفسها في كود معين وجميعها تندرج تحت اسم أو هيكل ثابت يمكن استخدامه بمجرد كتابة جملة كودية واحدة دون الحاجة للاهتمام بالأوامر والوظائف الداخلية. “مثل ما وضحنا في المثال (3)”
2- الأخر مستقل عن اللغة وهذا يعني أنه مكتوب بطريقة تتيح له أن يستخدم في العديد من لغات البرمجة.
مثال عن النوع الثاني هو على سبيل المثال ،الموقع الذي يعرض أماكن تواجد المطاعم في مكان ما يتيح للمستخدم بوضع مجموعة معلومات إضافية على نفس خريطة الموقع التي جلبت من خرائط جوجل (خرائط جوجل)، وذلك بسبب ان خرائط جوجل تحتوي على هذا النوع والذي يسمح بعمل هذا الشي ء. واجهة برمجة التطبيقات الخاصة بخرائط جوجل تتحكم بماهية المعلومات التي يمكن للمستخدم استغلالها وما الذي يستطيع ان يعمل بها وكذلك ليس على الخرائط الخاصة لجوجل فقط بل أنها تستخدم في العديد من المهام الأخرى مثل ربطها بموقع إلكتروني لإتاحة فرصة عملية الشراء من خلال الموقع بالفيزا
وأخيراً واجهات برمجة التطبيقات ليس محصوراً على مواقع الويب فقط فالمكتبات البرمجية كذلك توفر واجهات تمكن المبرمج من استعمالها , مثل : مكتبة معالجة الصور , يكفي للمبرمج استدعاء دالة تغيير حجم صورة في المكتبة داخل كود وإدخال الصورة فيها .
ولديك الآن فكرة أفضل عن ما هي واجهة برمجة التطبيقات (API). في النهاية، لست بحاجة إلى معرفة ما هي واجهة برمجة التطبيقات ما لم تكن مطورًا، ولكن إذا رأيت نظامًا أساسيًا أو خدمة قد أضافت واجهات برمجة تطبيقات جديدة لمختلف الأجهزة أو الخدمات، فيجب أن يكون من السهل على المطورين الاستفادة من هذه الميزات.