ما هي ال APIs و علاقتها بتطبيقات الطرف الثالث ( third party apps ) ؟
ما هي ال APIs ؟
سؤوال مهم،
سأتكلم بشكل بسيط من واقع خبرة وبعيد عن المصطلحات العلمية!
سأبدأ بمثال،
قبل سنتين أو أكثر قمنا ببرمجة موقع نور لإنشاء قوائم تشغيل لسماع القرآن (nooor.us) .. هذا الموقع يسمح للزائر بإنشاء قوائم تشغيل حسب رغبته .. عندما يقوم الزائر بإنشاء القائمة يتم تخزين بياناتها في قاعدة البيانات بشكل طبيعي وكما هو معروف .. عندها، إذا أردنا أن نعرض أحد هذه القوائم الى زائر ما، سنقوم بالإستعلام من قاعدة البيانات لجلب بيان القائمة وعرضها بطريقة تليق بموقع الويب ..
الآن عندما فكرنا بإنشاء تطبيق لموقع نور لنظامي الآيفون والأندرويد، سنحتاج إلى جلب بيانات هذه القوائم من قاعدة بيانات الموقع لعرضها في التطبيق.. نحن نحتاج نفس البينات و لكن نريد أن نعرضها "بطريقة أخرى"، بل حتى بإستخدام لغة برمجة مختلفة عما قمنا ببرمجة الموقع الرئيسي بها.
بدون فكرة الواجهات البرمجية API أعتقد أنه لا يمكننا جلب هذه البيانات، وإنما سنضطر إلى إنشاء قاعدة بيانات جديدة للتطبيق نفسه وسنقوم بإعادة الكرّة من جديدة من تخزين لقوائم التشغيل والإستعلام وغيرها .. مما ينتج عنه مزيد من الجهد والوقت والمشاكل بكل تأكيد ..
الآن بفضل هذه التقنية أو الطريقة ، سنقوم بإستخدام بياناتنا بالطريقة التي تحلو لنا والتي تناسب لغة البرمجة التي نقوم بالبرمجة بإستخدامها ..
إذن، فكرة الواجهات API -كما أعتقد- هي أن تجلب البيانات (والخدمات) بتنسيقات تسمح لنا بإستخدامها مرة أخرى من أي مكان، وأشهر هذه النسق هي JSON و XML .
قمنا هنا مثلاً بإنشاء API يجلب لنا آخر ١٠ قوائم تشغيل قام بإنشائها الزوار في موقع نور وعرضها بتنسيق XML
إنظر لنتائج هذا الرابط :
http://www.nooor.us/api/pla...
لو تلاحظ، هذه قائمة بتنسيق بسيط تُظهر لنا آخر القوائم في موقع نور، في هذه اللحظة أي برنامج بأي لغة تقريباً يستطيع أن يقوم بجلب هذه القائمة من الرابط وإستخدامها ، إذا كانت اللغة تستطيع التعامل مع بيانات XML وأعتقد كل اللغات تفعل.
والآن، ما أهمية واجهات الـ APIs الخاصة بالمواقع والخدمات الكبيرة ،
ببساطة هي تسمح لك بإستخدام الخدمة أو بياناتها بطريقتك أنت، لتستفيد هي من الإنتشار وأنت تستفيد بأن تحصل على بيانات وخدمات جاهزة يمكنك إستخدامها مباشرة بدل أن تعيد إختراع العجلة من جديد ..
مثال أخير، عميل يطلب منك برمجة موقع له ويريد أيضاً قائمة بريدية بمواصفات ممتازة، بدل أن تقوم بإختراع العجلة وتبدأ من الصفر بإنشاء قائمة بريدية بمواصفات ممتازة وقد تنجح وقد لا تفعل، هناك خيار آخر وهو أن تقوم بإستخدام خدمات موجودة بالفعل تؤدي نفس المهمة التي تريد إنشائها، هناك الكثير من المواقع التي تقدم خدمة قوائم البريد بإمكانيات جبارة وربما أشهرهم Mailchimp.com .. من خلال الـ API الخاص بموقع Mailchimp أنت تستطيع أن تنشئ نظام قوائم بريدية من داخل لوحة تحكم موقعك وبالخصائص التي تهمك فقط وتعرضها بالطريقة التي تناسبك وتناسب مشروعك. أنت هنا بدأت من حيث إنتهت mailchimp إن صح التعبير.
بالطبع ستظل أنت مقيّد بما تسمح لك هذه الخدمة بتقديمه تقريباً ، أي مثلاً لو قامت شركة mailchimp بإيقاف ال API الخاص بها، عندها ستتوقف الخدمة عندك بالكامل كما هو متوقع.
هناك أفكار ومشاريع ربحية مبنية بالكامل على إستخدام API خدمات أخرى، مثل تطبيقات تويتر الغير رسمية وغيرها كثير ..
واجهة برمجة التطبيقات (بالإنجليزية: Application Programming Interface وتختصر إلى API) هي مجموعة من الروتينات، وهياكل البيانات ,data algorithm object classes، و/ أو البروتوكولات التي تقدمها المكتبات و/ أو نظام تشغيل الخدمات لدعم بناء البرامج.
هناك نوعان منها:
احدهما يعتمد على لغة البرمجة ؛ بمعنى انه متاحُُ فقط في لغة برمجة معينة، ويقوم على استخدام syntax وعناصر هذه اللغة لجعله ملائما للاستخدام في هذا السياق.
و الأخرى مستقلة عن اللغة وهذا يعنى انها مكتوبة بطريقة تتيح لها ان تستخدم في العديد من لغات البرمجة (عادةً an assembly/C-level interface) وهذا النمط مطلوب في أنواع الواجهات البرمجية API المستخدمة في service غير المرتبطة بعملية معينة process، أو نظام تشغيل وعادة ما تكون متاحة كروتين منفصل.
مثال عن النوع الثاني هو على سبيل المثال ،الموقع الذي يعرض أماكن تواجد المطاعم في مكان ما يتيح للمستخدم بوضع مجموعة معلومات اضافية على نفس خريطة الموقع التي جلبت من خرائط جوجل (Google Maps)، وذلك بسبب ان خرائط جوجل تحتوي على هذا النوع والذي يسمح بعمل هذا الشيء.واجهة برمجة التطبيقات الخاصة بخرائط جوجل تتحكم بماهية المعلومات التي يمكن للمستخدم استغلالها وما الذي يستطيع ان يعمل بهاوكذلك ليس على الخرائط الخاصة لجوجل فقط بل انها تستخدم فى العديد من المهام الاخرى مثل ربطها بموقع الكترونى لاتاحة فرصة عملية الشراء من خلال الموقع بالفيزا او كروت الــ ATM.
باختصار: مجموعة من الدوال تُستخدَم للاستفادة من مكتبة برمجية معينة أو خدمة معينة.
مثلاً، Twitter API هي مجموعة من الدوال على هيئة HTTP requests تستخدم للاستفادة من خدمات Twitter من تغريد وإعادة تغريد وغيرها من الخدمات. مثال آخر، المكتبة JMF في لغة الجافا، هي مكتبة برمجية تستخدم دوالها (its APIs) للتعامل مع الـ media من فيديو وأصوات.
مثل هذه المسميات يصعب ان تجد مجال واحد يمكنك حصرها به
وللخوض في هذا المجال ستجد العديد من الاراء وكل يطلق ما يريد على ما يراه مناسب
اعتبرها على أنها Web Service لا علاقة لك بها, فقط كل ما عليك فعله هو ارسال الامر واستقبال النتائج في حال كانت مرتبطة بالويب.
أيضا يمكنك اعتبارها ك مكتبات "Library" يمكنك تضمينها داخل مشروعك واستخدام دولها بشكل مباشر
لنفرض ان لديك موقع يقدم خدمة تحديد اسم المنطقة عن طريق احداثياتها, ستقوم انت ببرمجة API يسمح للمستخدمين بارسال احداثيات المنطقة لاستقبال اسم المنطقة. تطبيقاتهم لم تحتوي على اي كود لمعالجة هذا الجزء من المشروع, بل انت قمت ببرمجة API لتنفيذ هذا الامر واصبح الناس يستعينون به بدل من كتابتة من جديد. مثل هذه الأمور تستخدمها الشركات لنشر خدماتها بين اوساط المبرمجين وتوفير الوقت والجهد عليهم وتسويق خدماتهم.
ولتأخذ الفكرة بشكل عام انظر لها على أنها شيئ سيريحك جدا من كتابة الكودات, فقط قم باستدعاء الدوال من API واستخدام النتائج في تطبيقك.
التعليقات