لست مبرمجًا وأحببت أن اعرف ما هو الـ API وما هي أهميته للمواقع
وكيف يعمل، أتمنى تبسيط الشرح لغير المبرمجين
هدفي من السؤال تبسيط المعلومات لغير المبرمجين حتى نفهم منكم هذه التقنية التى اعتقد انها اصبحت مهمة جدًا
سأشرحها من خلال مثال بسيط
الإنترنت بشكل عام قائم على الطلب Request (من طرف المستخدم) والإجابة عليه Response (من طرف المُخدم)
أبسط انواع الطلب هو كتابة عنوان الموقع (الدومين) في خانة عنوان المتصفح أو من خلال النقر عليه إن كان كرابط في مكان ما ليفتح لك صفحة الموقع
إذا اسم الدومين هو عبارة عن طلب يذهب للسيرفر من خلال آلية معدة مسبقا تسمى البروتوكل وفي حالتنا البروتوكل الشائع هو http حيث يشكل طلب محمل ببعض البيانات الإضافية مثل نوع المتصفح وعنوان المستخدم و غيره ويرسله إلى السيرفر الذي يستضيف الدومين
يستقبله المخدم ويقوم بتشكيل جواب محمل ببعض البيانات ومنها كود الصفحة الرئيسية للموقع أو صفحة الخطأ أو أي شيء حسب الاستجابة ويعيده إلى المرسل فيستقبله المتصفح ويترجمه إلى ما يناسب فتفتح الصفحة
الـ API هو عبارة عن خدمة تسمح للمستخدم بإرسال عنوان بصيغة ما محمل ببعض البيانات فيستقبلها المخدم ويعيد الجواب حسب الخدمة
كمثال :
تريد تضمين خارطة جوجل بحيث تكون مركزة على عنوان محدد يمثل موقع مكتبك ومعمول له تكبير تقريب للعنوان
يكفي أن تستخدم رابط معرف مسبقاً من قبل جوجل ويتضمن الاحداثيات ضمنه وتضعه في مكان ما صمن صفحتك ليحل محله فورم كامل يتضمن الخارطة وهي محددة على الجزء المطلوب
أمثلة كثيرة مثلا خدمة ياهو لإحضاء أسعار العملات
أو أسعار الذهب أو أحوال الطقس أو جدول رحلات الطيران أو نتائج مباريات
كما من أشهر الخدمات خدمات PayPal لإتاحة الدفع أون لاين حيث يتم يكون الطلب على هيئة عنوان يتضمن بعض المعلومات مثل حساب المشتري وحساب المستلم والمبلغ ومعلومات أخرى ليقوم بإتمام العملية وتحويل المال وإرسال إشعار أو جواب على شكل صفحة إشعار مع رابط للعودة للصفحة السابقة
ال API هو .. application program interface
المشكلة :
لديك نظام ما .. مبرمج بلغة ما .. يتعامل مع قواعد بيانات ما .. و تريد أى شخص أن يتعامل معه دون الحاجة إلى أن يقرأ الكود الخاص بالبرنامج أو يتعلم لغة برمجة معينه أو يتعامل مع قواعد بيانات معينه
الحل :
إستخدام بعض الأمور المتفق عليها عالمياً فى شيئين :
1- توفير وسيلة authentication:
هى مثل عملية تسجيل الدخول و لكن تستخدم فيها نظام التطبيقات يحتوى على app_id و app_secret
من المعايير العالمية مفتوحة المصدر فى هذا المجال نظام oauth 2.0
مثال بال PHP :
http://brentertainment.com/...
2- توفير وسائل التواصل مع موارد نظامك :
كمثال RESTful API يستخدم HTTP Methods :
يتم من خلاله توفير روابط يتم عمل Post أو Get أو put أو Delete ب parameters أنت تحددها و عند إتمام ال Request بشكل سليم يجب أن تقوم بإرجاع Response بصيغة متفق عليها عالمياً .. أبسطها raw html كأن ترجع رقم 1 مثلاً دليل على صحة الطلب أو أكثر تقدماً ك json array أو أكثر تحديداً و تعقيداً ك XML
مثال على API يعمل بال GET و يخرج JSON
http://khashabawy.com/api/s...
هناك أنظمة WSDL و SOAP و أكثر من يستخدمونها مطورى تطبيقات ASP و JAVA و تميل إلى استخدام XML كونها لغات تحتاج فى التعامل إلى تحديد ال Data types الخاصة بالمتغيرات
شكرًا صديقي خالد على الشرح والتفاصيل هل يمكن ان تذكر لي بعض سلبيات هذه الخدمة إن وجدت؟
وكيف نتجنبها!
خشباوى :)
لا يوجد سلبيات بل بالعكس الموضوع ممتاز لمن يبرمج ال API ... لا يوجد user interface ... فقط PHP أو أى كانت اللغة التى تستخدمها
و لكن يجب أن يكون ال API .. كما يقولون Rubust .. أى قوى و محدد جداً و لا يقبل بأى أخطاء من المستخدم و يغطى كافة الإحتمالات .
فكرة الـ API لا تحوي سلبيات، لكن قد تنشأ سلبيات سببها ضعف تصميم الـ API .
مثلا لنفرض أن مبرمج يريد تصميم API لعرض قائمة بالأعضاء الأكثر مساهمة في هذا الموقع مرتبة بحسب عدد المشاركات الأعلى ثم الأقل، هذه الـ API تعمل بكفاءة لكنها من وجهة نظر أخرى قد تسبب في زيادة الضغط على السيرفر في حال كان عدد الأعضاء كبيرا، ويمكن معالجة هذه المشكلة بإعادة تصميم الـ API لجلب أول 20 أو 50 سطر.
المثال السابق يبين أن السلبية قد تكمن في التصميم غير الجيد، وبالتالي التأثير قد ينعكس على الأداء وأكثر من هذا فقد يسبب خروق أمنية كما حدث في مواقع شهيرة، فرغم تصميمها الجيد للـ API وجد بعض الخبراء ثغرات استطاعوا الوصول إلى معلومات لا تقدمها الـ API بشكل مباشر بل عن طريق الثغرات، وليس بعيدا عن الموضوع ثغرات API لموقع فيسبوك .
الـ API هي موجهه للمطورين لتمكينهم من الاستفادة من مميزات نظام معين لتطوير نظام اخر خاص بهم، كيف ؟
لنفترض ان جهة ما قامت بتطوير نظام معين ( سواء كان موقع على الويب او نظام تشغيل او تطبيق اندرويد او اياً كان المهم انه نظام برمجي) ثم طرحت هذا النظام في السوق، هذا النظام بطبيعة الحال يقدم خدمات معينة، عندما توفر هذه الجهة صاحبة هذا النظام واجهة برمجية API فهذا يعني انها تتيح (للمطورين) الاستفادة من بعض خدمات هذا النظام لبناء برامجهم الخاصة.
امثله :
موقع الفيسبوك يوفر API تسمح بجلب بيانات المستخدم مثل اسمه، وصورته والعمر ... الخ، كمطور لو كنت بصدد بناء موقع فيه جزئية التسجيل فبدل ان اقوم ببناء نموذج يقوم الشخص بتعبئه حقول كثيرة، يمكنني الاستفادة من API الفيسبوك وجلب بيانات المستخدم بسهولة، هذا سيوفر علي وقت وجهد، وهذا تستخدمه مواقع كثيرة.
مثال اخر لو كنت بصدد برمجة نظام يعمل على Windows واحتجت الى تنفيذ امر لمعرفة كم حجم الذاكرة العشوائية RAM ، هنا انت لست بحاجة لكتابة اوامر طويلة للوصول للذاكرة العشوائية ومعرفة كم حجمها، فقط تحتاج الى استخدام API خاص بنظام التشغيل وندوز وهو سيجلب لك هذه المعلومة.
لو انت بصدد بناء برنامج فيه جزئية متعلقه بالخرائط، هنا خرائط قوقل توفر API يمكن الاستفادة منه وبناء نظامك الخاص بالاستفادة من خرائط قوقل.
لو اتاحت حسوب I/O مثلا API خاص بهذا المجتمع، هذا يعني اني انا كمطور استطيع الاستفادة من بيانات الاعضاء لبناء موقع اخر لا علاقة له بحسوب ابدا فقط يمكنني الاستفادة من بيانات اعضاء حسوب في موقعي.
اتمنى تكون وضحت الفكرة.
أظن أن هذا الشرح للأستاذ عبد الله عيد بسيط و لا يحتاج خبرة في البرمجة لفهمه
بغض النظر إن البرنامج اسمه "كلام مبرمجين" D:
API إختصارً ل Application programming interface وهي خدمة تُقدّمها المواقع أو البرمجيّات الخاصة بالشركات الكبرى لتسهيل إضافة بعض من مميزاتها لبرامج أخرى.
أمثلة:
إذا أردت بناء برنامج لسطح المكتب يقوم بتقصير الروابط فلا بدّ لي أن أستعين بمكتبة تقدمها مواقع إختصار الرّوابط مثل goo.gl ; bit.ly وهذه هي الAPI
إذا أردت بناء تطبيق يقوم بتسجيل المُستخدمين بتويتر أو فيسبوك فسأستعين بAPI توفّرها هذه المواقع.
وبالطّبع الAPI ليس محصورا على المواقع فقط.
يمكنك نشبيهها بشباك بيع المأكولات السريعة، تقف أمام الشباك و تطلب الطعام الذي تريد من القائمة المتوفرة
كل ما يمكنك فعله هو طلب الطعام الجاهز المتوفر الذي يناسبك و أخذه، أما وصفات التحضير و قائمة الخضروات و اللحم الموجود في الثلاجة فهذا ليس من شأنك أن تعرفه و لا يمكنك الوصول إليه.
لنفرض أنني أملك موقعا عالميا يهتم بإحصائيات المناخ لكل مدن العالم و هذا الموقع يوفر API تسمح بالوصول لمعلومات المناخ لأي مدينة تريد ، و أنت لديك موقع يهتم بأحوال الطقس في مدن بلدك فقط. في هذه الحالة ستستعمل API التي يوفرها موقعي للحصول على معلومات المدن التي في بلدك و تضعها في موقعك أو تطبيقك.
هناك شروحات خاطئة ومعقدة
application program interface
هي بمثل قائمة الطعام في الفنادق او المحلات مثلا
ما يهمك و اسم الوجبة سعرها وصورة لها
كيف صنعت وكيف اعدت ومكوناتها لا يهمك
نفس الشيء الapi
مثل قائمة الطعام بالنسبة للمستخدم
مثال اخر يمكن ان نصفها بوثيقة ضمان
يعني مثلا ان كسرفر ابرمج دوال هذه الدوال عندها وسم خاص بها وعندها قيمة ارجاع وعندها مدخلات
مثلا ناخذ دالة رياضية عادية جدا
f(x)=3x+5
x=[0..100]
هذه الدالة تاخذ متغير وهو اكس من 0 الى 100 طبعا مجال الاعداد الطبيعية اي يمكن ان اخذ 0.5 مثلا في هذه الحالة عندما اعمل استدعاء للدالة احتاج ان اعطيها قيمة ادحخال هي في هته الحالة 0.5 الخادم سوف يحسبها وسوف يعيد لي النتيجة 6.5
اي ان السرفر يقول لك ان اضمن لك انه اذا استدعيت الدالة f التي تحتاج الى مدخل في المجال 0 الى 100 فانني سوف اعيد لك القيمة 3x+5
مثال اخير بسيط جدا
الالة الحاسبة مثلا
الالة الحاسبة عندها خوارزميات للحساب فانت لست بالضرورة تحتاج معرفة هته الخوارزميات بل تحتاح الى اسم الدالة وقيمة الارجاع
مثلا cos(180)
sin(0)
هي دوال اعرف انها تاخذ مدخل يمثل الزاوية غالبا تكون بالراديان وتعيد قيمة بين -1 الى 1
كيف يحسبها لا يهمني
API هي مجموعة اوامر برمجية تخول لك الدخول الى وظائف ومعلومات برنامج/موقع/تطبيق/خدمة الكترونية. مثلا التويتر يوفر تعليمات API ليتمكن المبرمجون من استخدام معلومات او وظائف تويتر لدمجها في برامجهم. هذه بكل بساطة.
لو فرضا اراد موقع I/O ارابيا توفير مدخل للمبرمجين لجلب معلومات المستخدم (الاسم, الاسم المستعار , الموقع , النبذة , المجتمعات المفضلة) فإنه سيوفر تعليمات برمجية خاصة به تمكن المبرمج من الاتصال وطلب المعلومات في صورة معينة مثلا XML او JSON ثم اعادتها الى شكلها الاصلي وتوظيفها في برنامجه او منصته.
عبار عن خدمة ما يقدمها الموقع, من الممكن ان تكون عامة للجميع ومن الممكن ان تكون خاص بلموقع فقط ..
ومن الممكن ان يكون الموقع كله مبني باستخدامها.
مثال: خدمة لجلب معلومات موقع ما
https://freegeoip.net/json/...
هذه ال API نستطيع الان استخدامها في مواقعنا وبرامجنا وتطبيقاتنا المحمولة الخ ..
ومن الامثلة عليها ايضاً Facebook Graph الذي يتيح لك عن طريق ال API التعامل مع الموقع برمجياً, مثلا النشر على حائط شخص ما ..
تعريف لغير المبرمجين: الواجهة التي تمكن المبرمج أو التطبيق من استعمال خدمة التي قد تكون خدمة ويب أو موقع اجتماعي أو مكتبة برمجية... إلخ.
أمثلة حول استعمال خدمات ويب توفر API:
جلب أحوال الطقس بالأرقام من موقع ثم عرض البيانات بشكل جميل على شاشة هاتف.
برنامج يتصل بموقع فيسبوك و يعرض لك آخر المنشورات أو ينشر منشور بشكل يشبه المثال التالي حول جوجل.
يمكنك إجراء بحث في جوجل مباشرة: google.com/search?q=HELLO حيث فقط تدخل الجملة المطلوبة في المدخل q.
يمكنك لتطبيق جلب معلومات حول عنوان Bitcoin عبر طلب المعلومات من خدمة ويب مع إدخال البيانات الصحيحة مثل: blockchain.info/address/1EvJu8BRa86a مع تعويض 1EvJu8BRa86a بالعنوان المطلوب.
الأمر ليس في المواقع و الويب فقط، فالمكتبات البرمجية كذلك توفر API ليتمكن المبرمج من استعمالها، مثال: مكتبة لمعالجة الصور، يكفي للمبرمج استدعاء دالة تغيير حجم صورة التي في المكتبة داخل كوده و إدخال الصورة فيها.
بإختصار هي دوال تمكنك من جلب خصائص و خدمات الموقع الذي يقدمها .
مثلا موقع dailymotion لديه دوال تمكنك من جلب الفيديو بطرقة معينة و اعدادات معينة مثلا بإمكانك جلب الفيديو منه و جعل الجودة الرائيسية هي HD بدلأ من الجودة الإفتراضية .. الامر ليس محصور في الفيدوهات فقط فهي تتيح لك جلب اي خدمة او خصائص يقدمها الموقع اذا وجدة في دوال مثل التعليقات, المنشورات, و غيره ...
اخي انا صممت موقع وعايز
كل اللى بيسجل فى الموقع بيبقى عضويه مجانيه . ولما يدخل لوحة التحكم بتاعته بيلاقى ترقية العضويه . مثلا العضويه الاولى سعرها 10000 ساتوشى . مدة العضويه 10 ايام . والارباح من 100 الى 200 ساتوشى . والعضويه التانيه سعرها 20000 ساتوشى ومدتها مثلا 13 يوم والارباح من 200 الى 300 ساتوشى كل دقيقه وهكذا
لما بيجى يشترى عضويه من العضويات دى بيدفع سعرها اوتوماتيك وبعد كده العضويه بتتفعل اوتوماتيك
الارباح بتبقي واحد فاتح الموقع كده وكل 10 د بتضافله الفلوس
التعليقات