ماهو الـ API و Rest API

اذا كنت من الاشخاص المهتمين في قراءة المقالات او المستندات الخاصة بالمشاريع البرمجة قد مر عليك مصطلح API وربما تجده مرافق لبعض المصطلحات الاخرى مثل Database API, Windows API, Site API وغيرها, ولكن ماهو الـAPI؟

ماهو الـ API ؟

اختصاراً لـ Application Programming Interface وترجمتها الحرفية (الواجهة البرمجية) او (واجهة برمجة التطبيقات) او (واجهة التواصل بين التطبيقات) و لكن السؤال المهم “هل فهمت معنى الترجمة؟ انا مافهمت شيء :)”, ولكن افضل طريقة ممكن نترجم فيها هذا المصطلح هو بالمثال, لنفترض مثلا اردت في موقعك او تطبيقك عرض الطقس ولكن قد تواجهك مشكلة في طريقة الحصول على البيانات, يجب عليك التواصل مع بعض المراكز المتخصصة في تجميع هذه المعلومات ومن ثم يجب عليك معالجتها وعرضها بالطريقة التي تناسبك, امر متعب بكل تاكيد, ولكن ماذا لو وجدت موقع يوفر لك هذه الخدمة فقط عن طريق امر واحد ترسله للموقع وهو يقوم بارسال المعلومات التي تحتاجه, ولكن بكل تاكيد صاحب هذه الخدمة لن يعرض لك كامل مشروعه وكيف يقوم بتجميع وتحليل البيانات وغيرها من الامور, انما سوف يزودك برابط يطلب منك استخدامه ومن خلال هذا الرابط سيقوم السيرفر بمعالجة طلبك وارجاع ماتحتاجه دون ان ترى اي كود من المشروع,  وسنضرب مثال على موقع Open Weather Map, هو من اكبرا المواقع المتخصص بعرض المعلومات عن الطقس وحالة الجو لجميع مدن العالم, فمثلا لو اردنا عرض حالة الطقس لمدينة الرياض, سنستخدم هذا الرابط :

api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}

وربما لاحظت الرمزين التالين {lat} و {lon} , هذه الرموز الموجودة في الرابط تسمى Parameters ويجب عليك استبدالها بالمعلومات الصحيحة, في هذا المثال سنرسل مع الرابط خط الطول والعرض كالتالي:

api.openweathermap.org/data/2.5/weather?lat=24.750761&lon=46.715412

البيانات التي قام السيرفر بارجعها عبارة عن JSON Object تستطيع قرائتها والتعامل معها بشكل سريع:

ماهو الـ Rest API؟

اختصاراً لـ Representational state transfer  مبني على طريقة توافق مبدأ الـ WebSerivce من احد انواع الـ API وسميت بهذا الاسم نظراً لانها وسيلة لنقل المعلومات بين الـ Server و Client عن طريق بروتوكلات الـ HTTP, فجميع العمليات تتم من خلال هذه البروتوكولات باختلاف انواعها ومبادئها, يتكون الـ Rest API من مجموعة من الـ Services وكل واحد منها يعمل بشكل منفصل ويمكنها الارتباط لتعمل كمجموعة واحدة, وهو مبدأ مستحدث من الـ SOAP Message امر نوعا ما قديم والتعامل معه صعب نظرا لان طريقة التواصل بين السيرفر والـ Client كانت تتم من خلال ارسال ملفات XML للسيرفر بانماط معينة وتسمى هذه الانماط بـ SOAP MSG يقوم السيرفر بمعالجتها.

routes

HTTP Protocols

الـ HTTP لديه بعض البروتوكلات او الدوال تصف نوع الطلب المرسل الى السيرفر, لنفترض مثلا اردت جلب بعض المعلومات من السيرفر فمن الافضل ان تستخدم البروتوكول او الدالة GET اما اذا اردت اضافة بيانات جديدة فاستخدم بروتوكولPOST وهكذا, هذه الدوال تستخدم مع كل طلب يتم ارساله للسيرفر, واشهر هذه الدوال والمستخدم بكثرة هي اربعة:

  • GET لجلب عناصر من السيرفر (للعرض)
  • POST لإضافة عناصر جديدة (إضافة)
  • PUT لتعديل على عنصر (التعديل)
  • DELETE لحذف عنصر من المصدر (الحذف)

كما انه يوجد العديد من البروتوكلات الاخرى مثل OPTIONS, TRACE, PATCH and CONNECT تستطيع الاطلاع عليها من هنا.

BasicAuthenticationUsingWCFRest_2

Request  & Response

التواصل بين السيرفر والعميل يكون عن طريق امرين Request و Response, الاول الـ Request هو الامر الصادر من الـ Client وليكن مثلا صفحة ويب او تطبيق سطح مكتب او غيرها وكل امر او طلب يتكون من عدة امور:

  • الرابط الخاص بالـ Service الموجود على السيرفر.
  • البروتوكول المطلوب.
  • اي متغيرات او بيانات يجب ارسالها الى السيرفر.

سيستقبل السيرفر هذا الامر ويقوم بتحليله وعمل بعض العمليات بناء على طريقة برمجته ومن ثم بقوم بارجاع جواب Response يحتوي على العديد من الامور:

  • رقم الحالة HTTP Status Code وكل رقم يدل على امر معين, فبعض الارقام تدل على ان الطلب من العميل كان مقبول وتم ارجاع بيانات صحيحة “Code 200” وبعضها تدل على ان الطلب من العميل صحيح ولكن لم يتم يستطع السيرفر معالجة البيانات “Code 503” وغيرها من الارقام.
  • بعض المعلومات الخاصة بالـ Header والتي توضح بعض المعلومات عن السيرفر وعن المعلومات التي سيتقوم السيرفر بارجاعها.
  • البيانات التي طلبها الـ  Client وتكون بصيغة JSON.

مبادئ الـ Rest API

يوجد بعض المبادئ المتفق عليها مع الـ Rest يجب على الجميع اتباعها, متى ما ابتعد المبرمج عنها ابتعد عن المفهوم الذي قام عليه الـ Rest ,من بينها:

  • استخدم البروتوكول المناسب مع كل عملية طلب, فاذا اردت عرض معلومات استخدم GET و اذا اردت التعديل استخدم PUT.
  • كل طلب يجب ان يحوي جميع المعلومات الازمة من الـ Client الى للـ Server سواء كانت عن طريق Parameters في الرابط او عن طريق Body , واذا اردت ارسال اي معلومات اخرى مثل عمليات التحقق Authentication او غيرها فقم بارسالها في الـ Header.
  • لاتحاول ابدا ان تحفظ اي معلومات في Session وذلك لان جميع الطلبات يجب ان تكون Stateless بمعنى انها لاتحفظ اي بيانات او اي حالة في السيرفر.

المزايا

  • يمكن ربط العديد من الخدمات مع بعضها البعض عن طريق بعض الروابط.
  • فصل تام بين طبقة الـ Client و Server بحيث ان الـ Client لايستطيع ان يقوم بالتعديل او الاضافة على اي كود موجود في السيرفر.
  • يمكن ان يكون الـ Client اي منصة, ربما يكون صفحة ويب او جهاز جوال او برنامج سطح مكتب او اي شئ يمكنه التعامل وارسال طلبات HTTP.
  • خفة البيانات المنقولة لانها تعتمد على الـ HTTP.

العيوب

  • يجب ارسال جميع المعلومات في كل طلب بين الـ Client و Server.
  • المبرمج هو المسؤول عن الحماية فكل طلب Request يجب التحقق منه.

طريقة بناء Rest API

يوجد الكثير من المنصات Freamworks التي تستطيع من خلالها بناء Rest Api خاص بك, من بينها:

 

Share:
0 comments on ماهو الـ API و Rest API

Post a comment

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *