🔵 الأمن السيبراني 🔻
🔴 ماهو الـ API ؟
🔴 ماهي أنواع الـ API؟
🔴 ماهو الويب سيرفس WEB SERVICE؟ وطريقة عمله وخصائصه؟ وما الفرق بين API و الـ WEB SERVICE؟
هذا المقال بالتعاون مع التقني المهندس «خالد أبو إبراهيم» حسابه على تويتر @khaliidviip
⭕ ماهو الـ API ؟
الـ API واجهة برمجة التطبيقات.
أو Application Programming Interface.
وبعيد عن المصطلحات التقنية هو:
غلاف لتغليف شيء صعب من الداخل وجعله سهل من الخارج.
ويطلق على كل ما يتم تحويله من أوامر معقدة إلى أوامر بسيطة يستطيع أي شخص استخدامها بـ (API) وهو ليس لغة برمجه.
💢 لنفرض أنني أملك موقع لخدمة رسائل الجوال sms وهذا الموقع يوفر (API).
وأنت لديك موقع أو تطبيق تريد استخدام خدمة التحقق من التسجيل من خلال رسائل الجوال في هذه الحالة ستستعمل (API) التي يوفرها موقعي للحصول عليها.
💢 خرائط قوقل توفر (API) يمكن بناء نظامك الخاص بالاستفادة من خرائط قوقل.
⭕ ماهي أنواع الـ API؟
هناك نوعان من واجهات برمجة التطبيقات (API):
1- نوع يعتمد على لغة البرمجة.
بمعنى أنه تم تجميع مجموعة من الأوامر والوظائف بصيغة اللغة نفسها في كود معين وجميعها تندرج تحت اسم أو هيكل ثابت يمكن استخدامه بمجرد كتابة جملة كودية دون الحاجة للإهتمام بالأوامر والوظائف الداخلية.
2- نوع مستقل عن لغة البرمجة.
لا يحتاج أن يكتب بصيغة لغة برمجة معينة وإنما يكتب بشكل تستطيع فهمه معظم لغات البرمجة، نعلم أن جميع لغات البرمجة يتم ترجمتها في النهاية إلى لغة التجميع (ASSEMBLY LANGUAGE).
ومن هذا المبدأ يتم تصميم هذا النوع من الـ (APIs) بلغة التجميع Assembly.
ويستخدم هذا النوع في خدمات الويب (WEB SERVICES) التي تسمح لأكثر من نظام بالتواصل مع بعض بغض النظر عن لغة البرمجة المستخدمة.
لو أنك قمت بتطوير نظام يقدم خدمات معينة ثم طرحت هذا النظام في السوق.
وقدمت واجهة برمجية (API) فهذا يعني أنك تتيح (للمطورين) الاستفادة من خدماتك.
⭕ ماهو الويب سيرفس WEB SERVICE؟ وطريقة عمله وخصائصه؟ وما الفرق بين API و الـ WEB SERVICE؟
الويب سيرفس WEB SERVICE:
وسيلة اتصال بين تطبيق وتطبيق.
والموقع الكتروني Web Site:
وسيلة اتصال بين شخص وتطبيق.
ويمكن تعريف
خدمات الويب WEB SERVICE:
وسيلة للتواصل بين الأنظمة.
وليكن مثل:
نظام أندرويد وموقع إلكتروني.
نظام ios وموقع الكتروني.
موقع إلكتروني وموقع إلكتروني آخر.
ويمكن تعريفها على أنها:
خدمة تسمح لبرنامج بالتواصل مع التطبيق للحصول على إضافة المعلومات دون الحاجة لفتح التطبيق.
عمل خدمات الويب يقوم التطبيق بالاتصال وطلب الخدمة (Service Request) من خدمة الويب التي يوفرها تطبيق آخر عبر واجهته البرمجية.
وهي ما تعرف بواجهة برمجة التطبيقات (API) وليست واجهة المستخدم.
ومن ثم ترسل خدمة الويب نتيجة الطلب للتطبيق مرة أخرى على هيئة لغة الترميز القابلة للامتداد XML.
أي أن خدمات الويب تستخدم مبدأ واجهة برمجة التطبيقات (API) للتواصل بين التطبيقات.
ويجب أن نعلم أن كل (WEB SERVICE) هي (API)
وليس كل (API) هو (WEB SERVICE)
ومع ذلك هناك تشابه بينهما ولكن أيضاً هناك فرق بين خدمة الويب وواجهة برمجة التطبيقات.
تستطيع جميع التطبيقات التواصل مع بعضها بدون مشاكل.
لأنها جميعاً تقوم بتخزين معلوماتها بأحد الطرق الموحدة المعروفة، وهي:
SOAP
UDDI
REST
WSDL
ثم ترجمة المعلومات في النهاية إلى أحد الصيغ المعروفة، مثل:
(XML) أو (JASON) وهي صيغ تستطيع جميع التطبيقات التعامل معها.
🔻 تتلخص الفكرة العامة لعمل خدمات الويب كالتالي:
1- يقوم البرنامج العميل (البرنامج الذي يريد الخدمة) بإرسال طلب من البرنامج المزود للخدمة باستخدام إحدى تقنيات خدمات الويب ولتكن (SOAP) على هيئة طلب باستخدام طريقة (HTTP POST).
2- تقوم خدمة الويب بفك الرسالة وتحويلها لأوامر يستطيع البرنامج المزود للخدمة فهمها.
3- يقوم البرنامج المزود بجمع المعلومات المطلوبة وتحويل المعلومات إلى رسالة (SOAP) ثم إرسالها للبرنامج العميل.
وبالتالي كما ذكرنا سابقاً يتضح أن خدمات الويب هي وسيط بين تطبيق وتطبيق آخر.
🔶 الخلاصة:
طريقة عمل الموقع الإلكتروني يتم عن طريق إرسال طلبات Requests من المستخدم إلى قاعدة البيانات (DATABASE) ثم يتم الرد Response بهذه المعلومات وعرضها من خلال المتصفح.
ولكن للحصول على أي معلومات من قاعدة البيانات لابد من معرفة اسم المستخدم والباسورد لقاعدة البيانات.
لو أردنا خدمة الطقس التي يقدمها الموقع الشهير Yahoo، وأنت تقوم بعمل تطبيق يريد الاستفادة من هذه الخدمة، فمن الطبيعي أن التطبيق يحتاج للدخول إلى قاعدة بيانات موقع Yahoo للحصول على المعلومات لعرضها، ولكن هل معقول أن يعرف أي شخص طريقة الاتصال بقاعدة البيانات؟
بالطبع غير منطقي !!
هنا يأتي دور خدمة الويب (WEB SERVICES)، بحيث يقوم موقع ياهو بعمل خدمة تقوم بعرض جزء من المعلومات الخاصة بالطقس من قاعدة البيانات وصياغتها بصيغة (XML) أو (JASON) ثم السماح لأي تطبيق باستخدام هذه الصيغ دون السماح للتطبيق بالوصول لقاعدة البيانات.