أنظمة API. API: ما هو وكيفية العمل وإعداد التكامل. تُستخدم واجهات برمجة التطبيقات (APIs) للتواصل بين الخدمات

إذا كنت تعمل ولو عن بعد بالقرب من مجال تطوير الويب، فيمكنك أن تكون متأكدًا بنسبة 100% من أنك ستسمع تلك الحروف الثلاثة سيئة السمعة: API.

وتتوزع الأحاديث حولهم بين المبتدئين والخبراء:

"لماذا يجب أن أقوم باستدعاء API؟ هل لديه رقم؟

"إن الاتصال البسيط بواجهة برمجة التطبيقات التابعة لجهة خارجية سيساعدك على تحقيق ذلك."

"سوف نقوم بإنشاء واجهة برمجة تطبيقات RESTful لك؛ تأكد من أن نظامك الجديد يعمل بشكل جيد مع الخدمات الأخرى.

على الرغم من أن واجهات برمجة التطبيقات قد تبدو مخيفة في البداية، إلا أنها يمكن أن تغير حياتك كمطور حرفيًا.

لماذا؟ حسنًا، تعلم كيفية استخدام واجهات برمجة التطبيقات بشكل صحيح يمكن أن يبسط سير عمل التطوير لديك ويسرعه ويعززه. يؤدي إنشاء واجهات برمجة التطبيقات أو دمجها إلى تحقيق فوائد كبيرة لعملائك ونفسك.

كمطورين، كثيرًا ما تسمع النصيحة "لا تعيد اختراع العجلة":

نكتة:
نصيحة حكيمة: لا تعيد اختراع العجلة
المبرمج : حسنا
لا يكتب رمزًا مخصصًا مرة أخرى أبدًا

وبغض النظر عن النكات، تلعب واجهات برمجة التطبيقات دورًا مهمًا في ضمان عدم إعادة اختراع العجلة. في Snipcart، نحن نؤمن إيمانًا راسخًا بأن فهم أساسيات واجهة برمجة التطبيقات (API) يعد مهارة أساسية لمطوري الويب المعاصرين. في هذا المنشور سنساعدك على القيام بذلك. سننظر في:

فوائد استخدام واجهة برمجة التطبيقات (API) ما هي واجهة برمجة التطبيقات (API) في الواقع ما هي أنواع واجهات برمجة التطبيقات (API) الموجودة؟ أمثلة عملية لاستخدام واجهة برمجة التطبيقات (API).

حسنًا، ألم يحن الوقت للتعمق فيه؟

فوائد واجهات برمجة التطبيقات: لماذا نستخدمها؟

كانت إحدى الخطوات الأولى والأكثر أهمية في مسيرتي المهنية في مجال البرمجة هي فهم واجهة برمجة التطبيقات (API) بشكل صحيح.

ما زلت أستخدمها كل يوم.

قبل الدخول في التفاصيل الجوهرية، اسمحوا لي أولاً أن أقنعك بأن فهم واجهة برمجة التطبيقات (API) يستحق وقتك.

لأن تعلم استخدام واجهات برمجة التطبيقات (APIs) يحسن بشكل كبير من كفاءة التطوير لديك.

أولاً، يسمح لك باستخدام موجود منطقأو القطع، والذي ليس عليك أن تكتبه بنفسك. بعض الأشياء التي قد لا تتمكن من كتابتها بنفسك! لذلك، لتوفير الوقت الثمين، من المهم جدًا، كمطور، أن يكون لديك فكرة عن شكل واجهة برمجة التطبيقات (API).

ثانيًا، العديد من مشكلات التطوير التي ستواجهها قد تم حلها بالفعل بواسطة شخص آخر قبلك. مهما كان الشكل الذي تتخذه هذه الحلول الحالية (FaaS، والمكتبات، وخدمات الويب، ومجموعات SDK، وواجهات برمجة تطبيقات المحتوى، وما إلى ذلك)، فستحتاج على الأرجح إلى واجهة برمجة تطبيقات للتفاعل معها.

إذن ما هي واجهة برمجة التطبيقات (API)؟

حسنًا، التعريف الرسمي المخيف هو:

في برمجة الكمبيوتر، تعد واجهة برمجة التطبيقات (API) عبارة عن مجموعة من التعريفات والبروتوكولات والأدوات الروتينية لإنشاء برامج التطبيقات. بشكل عام، إنها مجموعة من طرق الاتصال المحددة جيدًا بين مكونات البرامج المختلفة. تعمل واجهة برمجة التطبيقات الجيدة على تسهيل تطوير برنامج كمبيوتر من خلال توفير جميع العناصر الأساسية التي يجمعها المبرمج بعد ذلك.

إنه صعب، هاه؟ دعونا نأخذ النثر الأكاديمي إلى أسفل درجة. فيما يلي تعريف أكثر ودية لواجهة برمجة التطبيقات المنزلية:

ببساطة، تعلن واجهة برمجة التطبيقات (API) عن واجهة يتفاعل معها منطقهادون الحاجة إلى معرفة ما يجري في الداخل. يمكن تطبيق هذا التعريف على أي لغة أو بروتوكول أو بيئة تتواجد فيها، طالما أنها موجودة مستوى البرنامج(المزيد عن هذا أدناه).

لإلقاء بعض الضوء على واجهات برمجة التطبيقات (APIs)، دعنا ندرج ما لا تتضمنه:

    واجهة برمجة التطبيقات (API) ليست بالضرورة خدمة خارجية. على سبيل المثال، يمكنك تضمين المكتبات مباشرة في الحل الخاص بك أو استخدامها من خلال واجهة برمجة التطبيقات.

    واجهة برمجة التطبيقات (API) هي أكثر من مجرد واجهة. هذه هي المواصفات/التنسيق والتنفيذ.

    واجهة برمجة التطبيقات (API) ليست واجهة المستخدم الرسومية (GUI). لا يقوم بالتفاعل على المستوى الرسومي؛ فهو يعمل فقط على مستوى البرنامج، إما من خلال لغة برمجة أو بروتوكول اتصالات.

واجهة برمجة التطبيقات (API) ليست أيضًا خطاف ويب. إذا كنت تواجه مشكلة في فهم الفرق بين الاثنين، فإليك مقدمة لخطافات الويب.

أنواع مختلفة من واجهات برمجة التطبيقات (API).

لم يتم إنشاء كافة واجهات برمجة التطبيقات على قدم المساواة.

على الرغم من أن لديهم نفس الهدف في الغالب، إلا أن بعضهم يحققه بشكل أفضل من البعض الآخر. نظرًا لأن هذه مقدمة سلسة، فلن أخوض في ما يجعل واجهة برمجة التطبيقات (API) أفضل من غيرها. ومع ذلك، ضع في اعتبارك أن الأشخاص لديهم طرق مختلفة لإنشاء واجهات برمجة التطبيقات. إذا كنت مهتمًا بهذا الموضوع، فابحث في Google عن "أنماط تصميم واجهة برمجة التطبيقات" و"نماذج واجهة برمجة التطبيقات". أو ابدأ فقط بمقالة المستوى المبتدئ الرائعة هذه https://translate.googleusercontent.com/translate_c?عمق=1&rurl=translate.google.ru&sl=auto&sp=nmt4&tl=ru&u=https://blog.cloudobjects.io/api-design / 2017/04/10/api-design-paradigms/&xid=17259,15700019,15700186,15700190,15700248,15700253&usg=ALkJrhg_fNGb7u4_EowoGcThqlUZsxYzow . :)

الغرض من واجهة برمجة التطبيقات (API) هو جعل حياتك كمطور أسهل. كيف يفعلون ذلك؟ من خلال الجمع بين مجموعة من الميزات/الميزات وكشف تلك الميزات من خلال نقاط النهاية (عادةً أنماط عنوان URL المستخدمة للتفاعل مع واجهة برمجة التطبيقات). نقاط النهاية هذه هي الطريقة الوحيدة للتفاعل مع أي واجهة برمجة تطبيقات. سيكون لكل نقطة نهاية تنسيق محدد لطلباتها واستجاباتها - ستجد عادةً هذا التنسيق في وثائق واجهة برمجة التطبيقات.

يمكن أن تكون نقاط النهاية وظائف بسيطة أو تتكون من العديد من الوظائف التي تستدعي واجهات برمجة التطبيقات الأخرى وما إلى ذلك. النقطة المهمة الوحيدة هنا هي أن المنطق الأساسي لهذه الوظائف تم تجريده بالكامل. لا تحتاج إلى أي معرفة بما يحدث بداخلها لاستخدامها. طالما أنك تستخدم التنسيق الصحيح، فستتمكن من استخدامها، وهي طريقة رائعة للقول، باستخدام أجزاء منها من تطبيقك.

خلاصة القول، واجهة برمجة التطبيقات (API) تشبه أي واجهة: سيعمل مفتاح الضوء على تشغيل الضوء، سواء كنت تعرف كيف تعمل التيارات الكهربائية (أو تعلمت أيضًا عندما كنت شابًا أنه يتعين عليك دفع فاتورة لتشغيله للكهرباء، ولكن هذه قصة أخرى.)

كيفية استخدام API: أمثلة عملية

قراءة وفهم وثائق API

من المستندات، يمكنك أن ترى أن كل وظيفة كائن تصف تنسيق الإدخال الذي يجب أن يكون (رقم، مجموعة أرقام، وما إلى ذلك) وتصف تنسيق الإخراج. ومع ذلك، لاحظ أنه لم يتم ذكر أي شيء فيما يتعلق بمنطق تشغيل هذه الوظائف. على سبيل المثال، إذا قمت بتشغيل وحدة تحكم المطور وMath.sqrt (بدون تنفيذ الوظيفة)، فستحصل على شيء مثل ƒ sqrt() ( ) . هذه هي روح واجهات برمجة التطبيقات: سواء قمت باستدعاء إحدى واجهات برمجة التطبيقات الخاصة بنظام التشغيل الخاص بك أو واجهة برمجة تطبيقات الويب، تظل هذه المبادئ كما هي.

أمثلة على استخدام واجهة برمجة التطبيقات الأساسية

هناك الكثير من الأشياء التي يمكنك القيام بها مع موفري واجهة برمجة التطبيقات (API) المشهورين. على سبيل المثال، غالبًا ما يتم استخدام واجهة برمجة التطبيقات لخرائط Google لتحسين تجربة المستخدم مع البيانات استنادًا إلى شاشات العرض وإشارات المرور في الوقت الفعلي. يمكن استخدام واجهة برمجة تطبيقات Twitter، وهي واجهة كبيرة أخرى، لتصفية وعرض التغريدات المستهدفة في الوقت الفعلي.

الآن، إذا كنت تتابع مدونتنا، أعتقد أنك مهتم بواجهات برمجة تطبيقات الويب أكثر من أي شيء آخر. لذلك دعونا نتعمق في حالات الاستخدام المحددة. يرجى ملاحظة أننا سوف نستخدم Postman في الأمثلة لدينا. بالطبع، يرتبط Rest Client هذا ببيئة الويب، ولكن عادةً ما توجد مثل هذه الأدوات في بيئات أخرى أيضًا. من الجدير إلقاء نظرة على الأدوات المتوفرة لبيئة معينة قبل البدء في اللعب بها؛ يمكن أن يوفر لك الكثير من الوقت.

إذا كنت تريد متابعتنا، فأنت بحاجة إلى تنزيل عميل Postman.https://www.getpostman.com/

استخدام واجهة برمجة التطبيقات العامة لاسترداد البيانات

سيكون مثالنا الأول بسيطًا جدًا، ولكنه لا يزال أكثر إثارة للاهتمام من المثال الرياضي.

سوف نستخدم Dog API! إنها ليست واجهة برمجة تطبيقات ممتعة فحسب، ولكنها أيضًا لا تتطلب أي مصادقة. بالإضافة إلى ذلك، فهي واجهة برمجة تطبيقات HTTP REST، مما يعني أنها واجهة برمجة تطبيقات ويب. نظرًا لأنه مرتبط بهذه البيئة، فإنه يتطلب منا الالتزام ببعض الميزات المحددة للبروتوكول: في هذه الحالة أفعال HTTP (GET، PUT، POST، DELETE، وما إلى ذلك). في مثالنا، سنبقي الأمر بسيطًا ونستخدم الفعل GET فقط. على أية حال، لا تسمح لك واجهة برمجة التطبيقات (API) بدعم أي شيء آخر. تسمح لك معظم واجهات برمجة التطبيقات العامة باستهلاك البيانات فقط، وليس نشرها، مثل فعل GET.

لنقم بتشغيل Postman ونرى كيف تبدو واجهة المستخدم الخاصة به.

تستخدم واجهة المستخدم الخاصة بي سمة داكنة، لذا قد تبدو مختلفة قليلاً عن تلك الخاصة بك.

قد يكون هناك الكثير من المعلومات التي يجب استيعابها في البداية، لذلك دعونا نبدأ مع الفعل وعنوان URL.

يجب أن يكون الفعل الافتراضي هو GET حتى تتمكن من تركه بهذه الطريقة وإدخال عنوان URL التالي: https://dog.ceo/api/breeds/list/all

انقر فوق "إرسال" وهذا كل شيء! يجب أن تتلقى ردًا يتضمن البيانات ذات الصلة. هاهو! لقد قمت للتو بإجراء أول استدعاء لواجهة برمجة التطبيقات (API). الآن في هذا المثال لن نستخدم أيًا من البيانات المستلمة. ولكن لديك فكرة: يمكنك عرض سلالات الكلاب المختلفة للمستخدم الخاص بك وعرض صورة لتلك السلالة إذا قام بالنقر عليها.

يمكنك اللعب بالطرق المختلفة الموجودة في وثائقها للتعرف على البيئة.

حقيقة رائعة: هذا المشروع الصغير مفتوح المصدر أيضًا، لذا يمكنك التحقق منه هنا https://github.com/ElliottLandsborough/dog-ceo-api.

التعامل مع المصادقة باستخدام واجهة برمجة التطبيقات الخاصة

سنستخدم هنا الكود فقط للتفاعل مع Snipcart API https://docs.snipcart.com/api-reference/introduction. يمكنك إغلاق Postman، لكن أبقِه في متناول يدك؛ من الجيد استخدام أداة كهذه عند التشغيل باستخدام واجهة برمجة التطبيقات.

سيكون الهدف هو إنشاء أداة CLI بسيطة لإنشاء خصومات للاستخدام لمرة واحدة للعملاء. سيتم إنشاء هذه الخصومات عبر واجهة برمجة التطبيقات (API) وستحدث جميعها بالكامل على جهاز الكمبيوتر الخاص بك.

أنشئ مجلدًا جديدًا لهذا المشروع، واستخدم npm init في المجلد وقم بتحميل محرر النصوص الخاص بك. الآن أنشئ ملف Index.js، ثم افتح ملف package.json. أضف فيه الأسطر التالية إلى كائن المستوى الأعلى:

"بن": ("الخصومات": "./index.js")

سنحتاج أيضًا إلى حزمة القائد لتحليل المدخلات من العميل. لذلك، قم بتشغيل npm install -save Commander في المجلد الحالي. سوف نستخدم أيضًا مكتبة صغيرة لإنشاء المعرفات؛ يمكنك تثبيته باستخدام npm install -save shortid . أثناء قيامنا بذلك، فلنقم أيضًا بتشغيل npm install -save request lib حتى نتمكن من تسهيل مكالمات HTTP. ارجع إلى ملف Index.js الخاص بك والصق هذا الكود:

#!/usr/bin/env العقدة var Program = require('commander'); فار shortid = require('shortid'); طلب فار = يتطلب('طلب'); الدالة CreateDiscount())( خصم var = ( الاسم: '20% OFF'، المشغل: 'Code'، النوع: 'Rate'، المعدل: 20، maxNumberOfUsages: 1، الكود: shortid.generate() ) request(( url : "http://app.snipcart.com/api/discounts" ، المصادقة: ('user': 'YOUR_API_KEY')، الطريقة: "POST"، json: صحيح، النص: خصم)، الوظيفة (خطأ، استجابة، الجسم )( console.log(body.code); )); ) برنامج .arguments(' ') .action(function(number) ( for(var i = parseFloat(number); i > 0; i-)( CreateDiscount ( ); ) )).parse(process.argv);

دعونا نركز فقط على وظيفة الطلب هنا. نقوم هنا بإجراء استدعاء API خارجي لـ Snipcart. يمكنك أن ترى أننا نمرر الطريقة: "POST" إلى الطريقة. وذلك لأننا نريد نشر البيانات إلى Snipcart API. من خلال تحديد هذه الطريقة، ستعرض واجهة برمجة التطبيقات الإجراء بشكل صحيح حتى تتمكن من قراءة نص الطلب الذي يحتوي على بيانات الخصم.

إحدى ميزات واجهة برمجة التطبيقات (API) المثيرة للاهتمام والتي لم نستخدمها بعد هي المصادقة. جميع الأمثلة الأخرى لدينا كانت على واجهات برمجة التطبيقات العامة: فهي لا تتطلب المصادقة. ولكن في سيناريوهات العالم الحقيقي، من المحتمل أن تتطلب معظم واجهات برمجة التطبيقات التي تستخدمها نوعًا من المصادقة، مثل Twitter API أو Google Maps API. هذا هو "النمط" القياسي في عالم واجهة برمجة التطبيقات (API). لن يكون عملاؤنا سعداء إذا سمحنا لشخص آخر بإنشاء خصومات في متجرهم. ;)

يمكن أن تصبح مفاهيم المصادقة مرهقة للغاية؛ يمكنك قراءة هذه المشاركة الرائعة https://translate.googleusercontent.com/translate_c?عمق=1&rurl=translate.google.ru&sl=auto&sp=nmt4&tl=ru&u=http://blog.restcase.com/restful-api-authentication- الأساسيات /&xid=17259,15700019,15700186,15700190,15700248,15700253&usg=ALkJrhjwWO5yc6nayLpXCQkh_X95B0OZMw لإتقان الموضوع بشكل أفضل.

لتحقيق هدفنا، نقوم بتمرير مفتاح واجهة برمجة التطبيقات https://translate.googleusercontent.com/translate_c? Deep=1&rurl=translate.google.ru&sl=auto&sp=nmt4&tl=ru&u=https://en.wikipedia.org/wiki/Application_programming_interface_key&xid =17259, 15700019,15700186,15700190,15700248,15700253&usg=ALkJrhhpSWyk-nV9379VcrY3TMcKiAdXlQ مباشرة في الطلب، واسرع الخادم يتعرف علينا! ويمكنه بعد ذلك تقديم طلب خاص بحسابنا فقط.

إذا كنت ترغب في اختبار تطبيقنا الصغير، فيمكنك تشغيل npm install -g في دليل المشروع وتشغيل الخصومات x لإنشاء خصومات x عدد المرات. يمكنك الانتقال إلى لوحة تحكم Snipcart الخاصة بك (الحسابات المجانية إلى الأبد في وضع الاختبار) والتأكد من إنشاء الخصومات بشكل صحيح. يمكنك أن تتخيل مدى قوة هذا الأمر: إذا كان عليك إنشاء 200 من هذه الخصومات، فسوف يستغرق الأمر الكثير من الوقت للقيام بذلك من خلال واجهة المستخدم الخاصة بنا. ومع ذلك، بمجرد أن تتعرف على كيفية عمل واجهة برمجة التطبيقات (API)، يمكنك القيام بذلك في دقائق. الرمز قابل لإعادة الاستخدام أيضًا، لذا إذا كنت بحاجة إلى القيام بنفس الشيء خلال شهر، حسنًا، أنت جاهز!

إذا كانت لديك حالات استخدام محددة لواجهة برمجة التطبيقات (API) تريد التحدث عنها، فيرجى كتابتها في التعليقات. سننظر في إضافتها إلى خريطة طريق المحتوى الخاصة بنا! :)

افكار اخيرة

آمل مخلصًا أن يكون هذا البرنامج التعليمي قد ساعدك على فهم أفضل لواجهات برمجة التطبيقات (APIs) وكيف يمكنك استخدامها في سير عمل التطوير لديك.

بعض الوجبات السريعة:

  • ستعمل واجهات برمجة التطبيقات (APIs) على تسريع سرعتك وتوسيع قدرات التطوير لديك. استخدمهم!
  • لا ترتبط واجهات برمجة التطبيقات بالضرورة بالنظام البيئي للويب؛ سوف تراهم في كل مكان
  • تحقق دائمًا بعناية من وثائق واجهة برمجة التطبيقات (API) التي تريد استخدامها.
  • ابحث دائمًا عن الأدوات الموجودة (واجهات برمجة التطبيقات أو غير ذلك) في نظامك البيئي قبل البدء في البرمجة.

الآن مثالنا الأخير ليس جاهزًا "للإنتاج"، لكنه يمنحك فكرة جيدة عما قد تبدو عليه الأمور في الحياة الواقعية. هناك العديد من الأشياء التي يمكننا تحسينها، مثل السماح للمستخدم بتحديد نوع الخصم، وما إلى ذلك. يمكننا أيضًا استخدام الرموز التي تم إنشاؤها لإرسالها بالبريد الإلكتروني مباشرةً في نفس الوظيفة، بدلاً من مجرد تسجيلها. إذا كانت لدينا احتياجات أكبر لأدوات الخصم الخاصة بنا، فيمكننا كتابة واجهة برمجة التطبيقات بأنفسنا. ومن هناك يمكننا أيضًا إنشاء واجهة مستخدم تتفاعل مع واجهة برمجة التطبيقات (API) الخاصة بنا إذا أردنا ذلك. على أية حال، أتمنى أن تكون قد وصلتك الفكرة الآن! :)

إذن ما هي الخطوة التالية؟ مثل كل شيء قيد التطوير تقريبًا، تحتاج إلى البرمجة والبرمجة والبرمجة والبرمجة والمزيد! سيقدم لك هذا إدارة واجهة برمجة التطبيقات (API) وتكاملها. وبعد فترة من الوقت سوف تصبح أكثر فعالية معهم.

وهنا تبدأ المتعة الحقيقية.

يمكن أن يكون العمل مع واجهات برمجة التطبيقات أمرًا مجزيًا ومحبطًا. من ناحية، من خلال التفاعل مع التطبيقات الأخرى، يمكنك زيادة الوصول إلى الجمهور بشكل كبير والتأثير "المبهر" لتطبيقك. ومن ناحية أخرى، يتضمن ذلك قراءة الكثير من الوثائق، ودراسة استراتيجيات المصادقة، وتحليل رسائل الخطأ غير المفيدة (أو حتى المفقودة).

أولاً، إذا كنت لا تزال لا تفهم تمامًا ما هي واجهة برمجة التطبيقات (واجهة برمجة التطبيقات)، فاقرأ شرح Skillcrush ثم الجزء الأول من هذه المقالة لمتابعة الأمر.

"API" هو مفهوم واسع بشكل لا يصدق - في كل مرة "يتحدث" تطبيقك إلى تطبيق آخر، فإنه يفعل ذلك من خلال نوع ما من واجهات برمجة التطبيقات (API). المكونات الموجودة داخل التطبيق الخاص بك، مثل الأجزاء المختلفة من Rails، تتواصل أيضًا مع بعضها البعض من خلال واجهات برمجة التطبيقات (APIs). إنها تطبيقات فرعية مستقلة إلى حد ما توفر البيانات التي يحتاجها كل منها لأداء مهامه المحددة. في عالم التطبيقات، كل شيء عبارة عن واجهة برمجة تطبيقات (API)!

عندما تقوم بإنشاء تطبيقات ذات وظائف أمامية أكثر ديناميكية (كل من تطبيقات Javascript ذات الصفحة الواحدة والتطبيقات البسيطة مع استدعاءات AJAX الفردية)، فسوف تتواصل مع الواجهة الخلفية لـ Rails من خلال واجهة برمجة التطبيقات (API) الخاصة بك، والتي هي في الواقع مجرد سطر إضافي أو سطرين من التعليمات البرمجية لإخبار وحدات التحكم الخاصة بك بكيفية تقديم JSON أو XML بدلاً من HTML.

ستتعلم في هذا البرنامج التعليمي كيفية إنشاء واجهة برمجة التطبيقات (API) الخاصة بك. سنغطي في الدروس اللاحقة كيفية التفاعل مع واجهات برمجة التطبيقات للتطبيقات الأخرى. ينبغي أن تكون الدروس نقطة انطلاق جيدة للتعرف على هذا الموضوع، ولكن من غير المرجح أن تغطي جميع الحالات بشكل كامل. جزء كبير من العمل مع واجهات برمجة التطبيقات هو معرفة كيفية قراءة وثائقها ومعرفة ما يريدون منك.

نقاط للنظر فيها

قم بمراجعة الأسئلة ومعرفة ما إذا كنت تعرف الإجابات. اختبر نفسك مرة أخرى بعد الانتهاء من المهمة.

  • كيف يفهم ريلز نوع الملف الذي تتوقع الرد عليه عند إرسال طلب HTTP.
  • ما هو الغرض من طريقة #الرد_على؟
  • كيف يمكنك إرجاع كائن مستخدم أثناء تحديد السمات التي لا تريد تضمينها في هذا الكائن (أي أنه لا يمكنك إرجاع User.first)؟
  • قم بتسمية الخطوتين خلف الكواليس لطريقة #to_json.
  • كيف يمكنك إخبار إجراء وحدة التحكم بعرض رسالة خطأ فقط؟
  • كيفية إنشاء رسالة الخطأ الخاصة بك؟
  • لماذا لا يمكنك استخدام طرق مصادقة وحدة التحكم المستندة إلى الجلسة إذا كنت تريد السماح بالاتصالات البرمجية بواجهة برمجة التطبيقات (API) الخاصة بك؟
  • ما هي "الهندسة المعمارية الموجهة نحو الخدمة"؟

أساسيات واجهة برمجة التطبيقات

إن تطبيق Rails الخاص بك هو في الواقع واجهة برمجة تطبيقات (API)، على الرغم من أنك قد لا تفكر فيه كواجهة برمجة تطبيقات (API). متصفح الويب الذي يقوم المستخدمون بتشغيله هو أيضًا برنامج، لذا فهو في الواقع يقدم طلب واجهة برمجة التطبيقات (API) إلى تطبيق Rails الخاص بك عندما يفتح المستخدم صفحة جديدة. نحن نميل إلى التفكير بهذه الطريقة لأن عرض قوالب HTML يعد مهمة شائعة لدرجة أننا ببساطة ندمج هذه الوظيفة في برامج الخادم لدينا كنوع استجابة قياسي، ونعتبر كل شيء آخر شيئًا غير عادي.

ومع ذلك، غالبًا ما ترغب في تقديم طلب لا يتطلب منك مواجهة كل متاعب استخدام المتصفح. قد لا تهتم ببنية الصفحة (HTML)، لكنك في المقابل تريد بيانات نظيفة. لنفترض أنك تريد الحصول على قائمة بجميع المستخدمين. يمكنك طلب شيء مثل http://yourapplication.com/users، والذي سيؤدي بالتأكيد إلى تشغيل الإجراء #index وعرض قائمة بجميع مستخدمي التطبيق.

ولكن لماذا تهتم بكل هذه المعلومات الإضافية إذا كان كل ما تريده هو قائمة المستخدمين؟ سيكون الخيار الأبسط هو إرسال طلب إلى نفس عنوان URL وتوقع استجابة JSON أو XML في المقابل. إذا قمت بتكوين وحدة تحكم Rails الخاصة بك بشكل صحيح، فسوف تحصل على كائن مصفوفة JSON بسيط يحتوي على جميع المستخدمين. رائع!

ينطبق نفس المبدأ عند التواصل مع واجهة برمجة التطبيقات الخارجية. لنفترض أنك تريد الحصول على التغريدات الأخيرة للمستخدم من تويتر. كل ما عليك فعله هو إخبار تطبيق Rails الخاص بك بكيفية التفاعل مع واجهة برمجة تطبيقات Twitter (أي المصادقة على نفسه)، وإرسال الطلب، ومعالجة مجموعة "التغريدات" التي سيتم إرجاعها.

إنشاء واجهة برمجة التطبيقات

قد ترغب في جعل تطبيق Rails الخاص بك واجهة برمجة تطبيقات خلفية خالصة لصفحات الويب الأمامية، أو قد ترغب فقط في معرفة كيفية إرسال JSON عندما تطلب الواجهة الأمامية ذلك. لن يغطي هذا القسم كيفية إنشاء واجهات برمجة تطبيقات RESTful كاملة مع وظائف المصادقة. هذه مقدمة سلسة للتعامل مع تطبيقك كواجهة برمجة التطبيقات (API).

الأساسيات

إذا كنت تريد أن يقوم تطبيق Rails الخاص بك بإرجاع JSON بدلاً من HTML، فستحتاج إلى إخبار وحدة التحكم الخاصة بك للقيام بذلك. والشيء الرائع هو أن نفس إجراء وحدة التحكم يمكن أن يُرجع أنواعًا مختلفة اعتمادًا على ما إذا كان المستخدم الخاص بك يقدم طلبًا عاديًا من المتصفح أو يصل إلى واجهة برمجة التطبيقات عبر سطر الأوامر. يحدد هذا نوع الطلب الذي تم إجراؤه بناءً على امتداد الملف المطلوب، مثل example.xml أو example.json.

يمكنك التحقق من رأي ريلز بشأن نوع الملف الذي تتوقعه عن طريق التحقق من سجل الخادم:

بدأ الحصول على "/posts/new" لـ 127.0.0.1 في 2013-12-02 15:21:08 -0800 المعالجة بواسطة PostsController#new كـ HTML

يخبرك السطر الأول بعنوان URL المطلوب، ويخبرك الثاني بمكان إرساله وكيفية معالجته بواسطة Rails. إذا كنت ستستخدم الامتداد .json فسيبدو كما يلي:

بدأ الحصول على "/posts.json" لـ 127.0.0.1 في 2013-12-04 12:02:01 -0800 المعالجة بواسطة PostsController#index كـ JSON

إذا كان لديك تطبيق اختباري قيد التشغيل، فحاول طلب عناوين URL مختلفة. إذا لم تتمكن وحدة التحكم الخاصة بك من التعامل معها، فقد تحصل على خطأ، ولكن يجب أن تظل قادرًا على رؤية ما يفهمه Rails لطلباتك.

تقديم JSON أو XML

بمجرد أن تقرر أنك تريد الاستجابة للطلبات باستخدام JSON أو XML، ستحتاج إلى إخبار وحدة التحكم الخاصة بك بعرض JSON أو XML بدلاً من HTML. إحدى الطرق للقيام بذلك هي استخدام التابع #respond_to :

وحدة تحكم مستخدمي الفئة< ApplicationController def index @users = User.all respond_to do |format| format.html # index.html.erb format.xml { render xml: @users } format.json { render json: @users } end end end

في هذه الحالة، يقوم #respond_to بتمرير كائن تنسيق إلى الكتلة، حيث يمكنك إرفاق استدعاء عرض مناظر له. إذا لم تفعل شيئًا، فسيتم عرض HTML باستخدام قالب Rails القياسي (في هذا المثال app/views/index.html.erb).

تعتبر وظيفة #render ذكية بما يكفي لفهم كيفية عرض نطاق واسع من التنسيقات. عندما تمرر المفتاح:json، فسوف يستدعي #to_json على القيمة، في هذا المثال @users. سيؤدي هذا إلى تحويل كائن (كائنات) Ruby الخاصة بك إلى سلاسل JSON التي سيتم تمريرها إلى التطبيق الطالب.

بهذه الطريقة تحصل على API الخاص بك. بالطبع، يمكن أن يكون إنشاء واجهة برمجة التطبيقات (API) أكثر تعقيدًا بعض الشيء إذا كنت تريد القيام ببعض الأشياء الرائعة، ولكن كل ذلك يلتزم بالأساسيات.

تحديد السمات التي تم إرجاعها

لنفترض أنك تريد التأكد من عدم إعادة عنوان البريد الإلكتروني للمستخدم مع كائن المستخدم. في هذه الحالة، ستحتاج إلى تغيير السمات التي سيتم إرجاعها، وتعديل ما يفعله الأسلوب #to_json.

في السابق، كنت ستتجاوز ببساطة الطريقة #to_json بالإصدار الخاص بك، لكن الآن لن تحتاج إلى ذلك - في الواقع، ستتجاوز الطريقة #as_json بدلاً من ذلك. تُستخدم الطريقة #as_json في الطريقة #to_json، لذا فإن تعديلها يغير ضمنيًا نتيجة #to_json، ولكن بطريقة محددة إلى حد ما.

يقوم #to_json بأمرين: تشغيله #as_json ويحصل على تجزئة للسمات التي سيتم تقديمها إلى JSON. ثم يُعرض إلى JSON باستخدام ActiveSupport::json.encode . لذلك، من خلال تعديل #as_json، فإنك تكون أكثر تحديدًا بشأن الجزء من طريقة #to_json الذي تريد تغييره بالفعل.

في حالتنا، نقوم بذلك عن طريق تعديل #as_json في نموذجنا لإرجاع السمات التي نحتاجها فقط:

# فئة التطبيق/النماذج/user.rb المستخدم< ActiveRecord::Base # Вариант 1: Полное переопределение метода #as_json def as_json(options={}) { :name =>self.name ) # لا تقم بتضمين نهاية حقل البريد الإلكتروني # الخيار 2: استخدم الطريقة القياسية #as_json def as_json(options=()) super(only: [:name]) end end

بعد ذلك، ستحتاج وحدة التحكم لدينا فقط إلى عرض JSON كالمعتاد (في المثال أدناه، سيتم إرجاع JSON دائمًا، بغض النظر عما إذا تم إرسال طلب HTML أم لا):

# app/controllers/users_controller.rb فئة UsersController< ApplicationController def index render json: User.all end end

لاحظ أنك لا تحتاج إلى الاتصال بـ #to_json بنفسك عند استخدام #render - فهو سيقوم بذلك نيابةً عنك.

في بعض الأحيان قد يتطلب Heroku خطوات إضافية لعرض صفحات الخطأ بشكل صحيح. إلق نظرة. قد تحتاج إلى إزالة الصفحات الثابتة من التطبيق/الدليل العام أولاً.

ضمان الأمن من الخارج

لنفترض أنك تريد السماح بالوصول إلى واجهة برمجة التطبيقات (API) فقط إذا قام المستخدم بتسجيل الدخول. تقوم المصادقة الحالية في وحدة التحكم بهذه المهمة بالفعل - فقط تأكد من أن لديك مجموعة #before_action الصحيحة (على سبيل المثال، before_action:require_login). قد تحتاج إلى وظيفة حيث يمكن لكل من المستخدمين الذين قاموا بتسجيل الدخول وغير المسجلين عرض الصفحة، ولكن يجب أن يرى كل منهم بيانات مختلفة. لا تريد أن يتمكن المستخدمون غير المصادقين من إجراء مكالمات API للحصول على بيانات حساسة. وبالمثل، لا تريد السماح للمستخدمين غير المصرح لهم بزيارة صفحات HTML معينة.

إذا كنت تريد معالجة الطلبات من تطبيق ليس متصفحًا (على سبيل المثال، من سطر الأوامر)، فلا يمكنك الاعتماد على "ملفات تعريف الارتباط" للمتصفح للمصادقة. ولهذا السبب تستخدم معظم واجهات برمجة التطبيقات الرموز المميزة كجزء من عملية المصادقة. سنتحدث أكثر قليلاً عن الرموز المميزة في الدرس التالي.

الخطوات التالية

لديك الآن المهارات اللازمة لاستخدام تطبيق Rails الخاص بك لعرض ليس فقط HTML، بل أي تنسيق آخر أيضًا. إذا كنت تريد المضي قدمًا والسماح للمطورين الآخرين ببناء الأشياء باستخدام النظام الأساسي الخاص بك (على سبيل المثال، حتى يتمكنوا من تقديم طلبات برمجية بدلاً من المصادقة كمستخدم)، فسوف تحتاج إلى جعل نظام API الخاص بك أكثر قوة. لن نغطي كل ذلك هنا، ولكن تحقق مما يلي:

  • تصف المقالة Building Awesome Rails APIs العديد من أفضل الطرق للانتقال من تطبيق الألعاب إلى معايير API الصناعية.

الخدمات الهندسية الموجهة

لقد حان الوقت لتقديم نهج معماري يسمى "الهندسة الموجهة نحو الخدمة" (SOA). الفكرة الأساسية هي أن طلبك سيتكون من العديد من الخدمات، مثل نظام الدفع، وتسجيل المستخدم، ووحدة التوصية، وما إلى ذلك. بدلاً من بناء كل ذلك داخل تطبيق رئيسي واحد، يمكنك تقسيم الأنظمة الفرعية إلى أجزاء مستقلة تمامًا تتواصل مع بعضها البعض باستخدام واجهات برمجة التطبيقات الداخلية.

وهذا أمر جيد لأسباب عديدة. نظرًا لأن كل جزء من تطبيقك لا يهتم بكيفية عمل الأجزاء الأخرى ويعرف فقط كيفية طلب البيانات من خلال واجهة برمجة التطبيقات (API) الخاصة به، فيمكنك إجراء تغييرات مهمة على رمز الخدمة وسيعمل باقي التطبيق كما كان من قبل. يمكنك استبدال خدمة بأخرى بشكل كامل، وطالما أنها تتواصل باستخدام نفس أساليب واجهة برمجة التطبيقات (API)، فسوف تسير الأمور بسلاسة تامة. يمكنك استخدام واجهات برمجة التطبيقات الخارجية كجزء من تطبيقك (مثل أنظمة الدفع) بدلاً من كتابة واجهات برمجة التطبيقات الخاصة بك. يمكنك إنشاء تطبيق PHP يتواصل مع تطبيق Python الذي يتواصل مع تطبيق Rails، وسيعمل كل شيء لأنهما يتواصلان مع بعضهما البعض باستخدام واجهة برمجة التطبيقات (API).

من الجيد بشكل عام أن تحاول جعل كل جزء من طلبك مستقلاً قدر الإمكان. يفرض عليك مفهوم SOA التفكير فيما يتعلق بالطرق التي تريد كشفها لأجزاء أخرى من التطبيق الخاص بك، مما سيؤدي أيضًا إلى تحسين التعليمات البرمجية الخاصة بك. بالإضافة إلى ذلك، بافتراض أن كل مكون رئيسي في تطبيقك مستقل، ستتمكن أيضًا من عزل المشكلات بسهولة أكبر والتعامل مع الأخطاء بطريقة أكثر فائدة.

إن استخدام بنية موجهة نحو الخدمة لتطبيق بأكمله يشبه تقسيم نص روبي العملاق والمعقد إلى فئات وأساليب أنيقة، فقط على نطاق أوسع.

واحدة من أشهر حالات الانتقال إلى الهندسة المعمارية الموجهة نحو الخدمة هي Amazon.com. في أحد أيام عام 2002، صرح جيف بيزوس بصراحة أن جميع مجموعات العمل يجب أن تنتقل إلى SOA أو يتم طردها. سيئة السمعة مشاركة مدونةتحدث أحد موظفي Google، المخصص للأغراض الداخلية ولكن تم نشره عن طريق الخطأ، عن قوة أمازون في استخدام SOA. إنها قراءة رائعة، لذا تأكد من الاطلاع عليها، ولكن النقاط الرئيسية في رسالة بيزوس ملخصة في الاقتباسات التالية من المنشور:

1) توفر جميع الفرق الآن بياناتها ووظائفها من خلال واجهات الخدمة.

2) يجب على الفرق التواصل مع بعضها البعض من خلال هذه الواجهات.

3) يُحظر الأشكال الأخرى للاتصال بين العمليات: لا توجد روابط مباشرة، ولا قراءة مباشرة لبيانات أمر آخر، ولا توجد نماذج ذاكرة مشتركة، ولا أبواب خلفية، وما إلى ذلك. الطريقة الوحيدة المسموح بها للتفاعل هي الوصول إلى واجهة الخدمة عبر الشبكة.

4) لا يهم ما هي التكنولوجيا التي يستخدمونها. HTTP، Corba، Pubsub، بروتوكولات الملكية - لا فرق. بيزوس لا يهتم.

5) يجب أن تكون كافة واجهات الخدمة دون استثناء مصممة بشكل مبدئي مع إمكانية التحكم بها خارجياً. أي أنه يجب على الفريق التخطيط والتصميم حتى يتمكن من توفير الواجهة للمطورين خارج الشركة. لا استثناءات.

6) سيتم طرد أي شخص يتجاهل هذه المتطلبات.

SOA هو عمل جاد. بالتأكيد، هناك الكثير من المشكلات التي تظهر عند استخدامه - راجع هذا المنشور حول "الدروس المستفادة" من أمازون - ولكنه يتمتع بقدر لا يصدق من الفوائد.

ربما لن تقلق كثيرًا بشأن SOA أثناء قيامك بإنشاء تطبيقات ألعاب لنفسك، ولكنها بالتأكيد مشكلة ستظهر عندما تبدأ العمل في شركة تكنولوجيا معلومات، لذا فإن التعرف عليها يعد ممارسة جيدة.

هدفكم

  1. اقرأ القسم 7 من دليل وحدات تحكم Rails للتعرف على عرض JSON وXML.
  2. ليست مطلوبة عرضها (لأنها تذهب إلى أبعد قليلاً مما نحن مستعدون له حاليًا)، ولكن إذا كنت مهتمًا، فألق نظرة على Railscasts في قسم الموارد الإضافية أسفل الدرس لمعرفة المزيد حول فوائد API.

خاتمة

سنعمل بشكل وثيق مع تطبيقك كواجهة برمجة التطبيقات (API) أثناء دورة Javascript. في هذه الدورة التدريبية، ستقوم بإنشاء العديد من التطبيقات المتكاملة التي تستخدم استدعاءات AJAX للحصول على تجربة مستخدم أفضل، والتي تتضمن بشكل أساسي عرض بيانات XML أو JSON بدلاً من صفحة HTML كاملة. ستقوم بعد ذلك بإنشاء العديد من تطبيقات Javascript ذات الصفحة الواحدة التي تعتمد على واجهة برمجة التطبيقات التي يوفرها تطبيق Rails الخاص بك لجلب جميع البيانات الضرورية من قاعدة البيانات، ولكنها بخلاف ذلك تعمل على جانب العميل (في المتصفح).

أفضل طريقة لفهم واجهة برمجة التطبيقات (API) هي إنشائها والتفاعل معها، وهو ما سنركز عليه في مشاريعنا.

حسب التعريف من ويكيبيديا، واجهة برمجة التطبيقات (API) عبارة عن مجموعة من الفئات والإجراءات والوظائف والهياكل والثوابت الجاهزة التي يوفرها تطبيق (مكتبة، خدمة) للاستخدام في منتجات البرامج الخارجية. يستخدمه المبرمجون لكتابة كافة أنواع التطبيقات.

ولكن نظرًا لأن الكثير من ويكيبيديا غير مفهومة لكثير من الناس، سأحاول أن أشرح بعبارات عامة ما هي واجهة برمجة التطبيقات (API) وما يتم صنعها عادةً من أجله وكيف يتم استخدامها.

تختلف واجهات برمجة التطبيقات تمامًا، ولكن على سبيل المثال، اخترت موقفًا حيث يكون لدينا شبكة من المتاجر وقاعدة بيانات مشتركة واحدة فقط. تخيل أنك تمتلك برنامجًا تابعًا. يعمل البرنامج التابع على المبدأ التالي: يقوم الشخص بالتسجيل في البرنامج التابع ويحصل على محرك متجر. وبعد ذلك يمكنه تثبيت هذا المتجر على استضافته وبدء العمل. لكن جميع البيانات الموجودة في هذا المتجر مأخوذة من قاعدة بياناتنا، أي أننا بحاجة إلى منح كل شريك إمكانية الوصول إلى قاعدة بياناتنا الثمينة. هل يمكنك أن تتخيل مدى خطورة هذا؟ بعد كل شيء، نحتاج إلى فتح الوصول إلى قاعدة البيانات من الخارج حتى تتمكن جميع المتاجر الشريكة من العمل معها. ماذا يحدث إذا وقعت بيانات الوصول الخاصة بك في أيدي المجرمين؟

هذا هو المكان الذي ستساعدنا فيه واجهة برمجة التطبيقات (API). بدلاً من منح حق الوصول إلى قاعدة البيانات، سنقوم ببساطة بإنشاء واجهة برمجة التطبيقات (API) التي من خلالها ستتلقى المتاجر الشريكة المعلومات. بهذه الطريقة، لن يعمل سوى البرنامج النصي API الخاص بنا مع قاعدة البيانات، وستعمل المتاجر مع هذا البرنامج النصي.

كيف تعمل؟
على سبيل المثال، يرسل أحد المتاجر طلبًا إلى واجهة برمجة التطبيقات (API) الخاصة بنا
http://ourapi.com/get_books?limit=20
وتدرك واجهة برمجة التطبيقات (API) الخاصة بنا أنها بحاجة إلى تقديم قائمة بالكتب تتكون من 20 نسخة، لأننا تجاوزنا معلمة الحد التي تساوي 20. يقدم البرنامج النصي (API) الخاص بنا طلبًا إلى قاعدة البيانات، ويتلقى قائمة بالكتب ويعيدها إلى store (في الواقع، يتم عرضه فقط) بتنسيق محدد. يمكن أن يكون التنسيق الذي تُرجع به واجهة برمجة التطبيقات (API) المعلومات أي شيء على الإطلاق، والشيء الرئيسي هو أن متاجرنا تفهمها. يمكن أن يكون هذا JSON أو مصفوفة متسلسلة أو XML. لم يعد هذا مهمًا، الشيء الرئيسي هو أن تفهم المبدأ.

يمكنك تحديد مجموعة الأوامر التي تفهمها واجهة برمجة التطبيقات (API) بنفسك. على سبيل المثال، في حالتنا، يمكن أن تكون هذه أوامر مثل الحصول على قائمة الكتب، أو الحصول على قائمة الفئات، أو الحصول على الكتب الشائعة، أو الحصول على كتب جديدة، وما إلى ذلك. بهذه الطريقة، حتى لو حصل المهاجم على فرصة الوصول إلى واجهة برمجة التطبيقات (API) الخاصة بنا، فكل ما يمكنه فعله هو الحصول على قائمة بالكتب، وهذا لا يشكل أي تهديد لقاعدة بياناتنا.

آمل أن أتمكن من شرح ماهية واجهة برمجة التطبيقات (API) بمثال بسيط. إذا كانت لديك أي أسئلة، فاطرحها في التعليقات أو في المنتدى وسنكون سعداء بمساعدتك في حلها.

عاجلا أم آجلا، يواجه أي مبرمج مثل هذا المفهوم واجهة برمجة التطبيقات. ومع ذلك، عندما يحدث مثل هذا الاجتماع، لا يعرف الجميع ما هو ولماذا هو مطلوب وكيفية استخدامه. وفي هذه المقالة سأقوم بسد هذه الفجوة في معرفة البعض منكم، وسأقدم أيضًا مثالاً من ممارستي.

واجهة برمجة التطبيقات (واجهة برمجة تطبيق) - هذا واجهة برمجة تطبيق. بعبارات أبسط، هذه مجموعة من الوظائف والثوابت والفئات وتنسيقات الاستعلام المختلفة التي يمكن استخدامها في برامج أخرى.

يمكن اعتبار ذلك واجهة برمجة التطبيقات- هذا كائن معين، لا نعرف تنفيذه، ومع ذلك، يمكننا استخدامه. على سبيل المثال، يعد الكمبيوتر كائنًا لا يعرف تنفيذه سوى عدد قليل جدًا من الأشخاص، ومع ذلك، يمكن للجميع تقريبًا استخدامه لتنفيذ بعض الإجراءات: مشاهدة مقاطع الفيديو، وتصفح الإنترنت، وطباعة النص، وما إلى ذلك. قليل من الناس يعرفون كيف يعمل كل شيء، ولكن الجميع تقريبا يمكن أن يفعلوا ذلك.

مثال واجهة برمجة التطبيقاتيكون واجهة برمجة تطبيقات ويندوز, واجهة برمجة تطبيقات OpenGL, واجهة برمجة تطبيقات Direct3Dوما إلى ذلك وهلم جرا.

على سبيل المثال، منذ وقت ليس ببعيد واجهت أيضا مباشرة واجهة برمجة التطبيقات. لقد قمت بالتسجيل في خدمة القائمة البريدية" SmartResponder.ru" وبدأت نشرة إخبارية بدأ الناس الاشتراك فيها. وكانت المهمة كما يلي: في غضون 24 ساعة بعد الاشتراك، يمكن لأي شخص شراء دورة الفيديو المدفوعة الخاصة بي بسعر مخفض. نظرًا لأنه يتم تخزين جميع المعلومات حول المشتركين على الخادم " SmartResponder.ru"، ثم الوصول العادي (على سبيل المثال، من خلال ديسيبل) لم يكن لدي حق الوصول إلى هذه البيانات، ولكن كان من الضروري تنفيذها. لحسن الحظ، " SmartResponder.ru"امتلك خاصتك واجهة برمجة التطبيقات، الذي استخدمته.

لقد وجدت فيهم واجهة برمجة التطبيقاتتنسيق الطلب للحصول على تاريخ الاشتراك نتيجة لذلك. مزيد من خلال لفةلقد أرسلت الطلب المقابل وحصلت على تاريخ الاشتراك المطلوب لفترة محددة عناوين البريد الإلكتروني. التالي هو المعالجة القياسية وإخراج النتيجة.

هذا المدى القصير معروف جيدًا لكل من لديه على الأقل بعض الخبرة في التطوير. ولكن لا يفهم الجميع ما يعنيه هذا بالضبط ولماذا هو مطلوب. مطور بيتر غازاروفتحدث عن واجهة برمجة التطبيقات (API) بكلمات بسيطة على مدونته.

يشير اختصار API إلى "واجهة برمجة التطبيقات" (واجهة برمجة التطبيقات، واجهة برمجة التطبيقات). تقوم معظم الشركات الكبرى في مرحلة ما بتطوير واجهات برمجة التطبيقات (APIs) للعملاء أو للاستخدام الداخلي. لفهم كيفية وكيفية استخدام واجهات برمجة التطبيقات (APIs) في التطوير والأعمال، عليك أولاً أن تفهم كيفية عمل شبكة الويب العالمية.

شبكة الويب العالمية والخوادم البعيدة

يمكن اعتبار WWW بمثابة شبكة ضخمة من الخوادم المترابطة التي يتم تخزين كل صفحة عليها. يمكن تحويل جهاز كمبيوتر محمول عادي إلى خادم قادر على خدمة موقع ويب كامل على الشبكة، ويستخدم المطورون خوادم محلية لإنشاء مواقع الويب قبل فتحها لمجموعة واسعة من المستخدمين.

عند الدخول إلى شريط عنوان المتصفح www.facebook.comيتم إرسال الطلب المقابل إلى خادم Facebook البعيد. بمجرد أن يتلقى المتصفح الرد، فإنه يفسر الكود ويعرض الصفحة.

في كل مرة يزور فيها المستخدم صفحة ما على الإنترنت، فإنه يتفاعل مع واجهة برمجة التطبيقات (API) الخاصة بالخادم البعيد. واجهة برمجة التطبيقات (API) هي الجزء المكون من الخادم الذي يتلقى الطلبات ويرسل الاستجابات.

API كوسيلة لخدمة العملاء

تقدم العديد من الشركات واجهات برمجة التطبيقات كمنتج جاهز. على سبيل المثال، تبيع شركة Weather Underground إمكانية الوصول إلى واجهة برمجة تطبيقات بيانات الطقس الخاصة بها.

سيناريو الاستخدام:يوجد على الموقع الإلكتروني لشركة صغيرة نموذج لتحديد المواعيد للعملاء. تريد الشركة دمج تقويم Google فيه لمنح العملاء القدرة على إنشاء حدث تلقائيًا وإدخال تفاصيل حول اجتماع قادم.

تطبيق واجهة برمجة التطبيقات:الهدف هو أن يقوم خادم الموقع بالاتصال مباشرة بخادم Google لطلب إنشاء حدث بالتفاصيل المحددة وتلقي رد Google ومعالجته وإرسال المعلومات المناسبة إلى المتصفح، على سبيل المثال، رسالة تأكيد للمستخدم .

وبدلاً من ذلك، يمكن للمتصفح تقديم طلب إلى واجهة برمجة تطبيقات خادم Google دون المرور عبر خادم الشركة.

كيف تختلف واجهة برمجة تطبيقات تقويم Google عن واجهة برمجة التطبيقات الخاصة بأي خادم بعيد آخر على الشبكة؟

من الناحية الفنية، الفرق هو في شكل الطلب والرد. لإنشاء صفحة ويب كاملة، يتوقع المتصفح استجابة بلغة ترميز HTML، بينما ستعرض واجهة برمجة تطبيقات تقويم Google البيانات بتنسيق مثل JSON.

إذا تم تقديم طلب إلى واجهة برمجة التطبيقات (API) بواسطة خادم موقع الويب الخاص بالشركة، فهو العميل (تمامًا كما يكون المتصفح هو العميل عندما يفتح المستخدم موقع الويب).

بفضل واجهة برمجة التطبيقات (API)، يحصل المستخدم على فرصة تنفيذ إجراء ما دون مغادرة موقع الشركة على الويب.

تستخدم معظم مواقع الويب الحديثة عددًا قليلاً من واجهات برمجة التطبيقات التابعة لجهات خارجية على الأقل. تحتوي العديد من المهام بالفعل على حلول جاهزة يقدمها مطورو الطرف الثالث، سواء كانت مكتبة أو خدمة. غالبًا ما يكون اللجوء إلى حل جاهز أسهل وأكثر موثوقية.

يقوم العديد من المطورين بتوزيع التطبيق على عدة خوادم، والتي تتفاعل مع بعضها البعض باستخدام واجهة برمجة التطبيقات (API). تسمى الخوادم التي تؤدي وظيفة دعم لخادم التطبيق الرئيسي بالخدمات الصغيرة.

لذا، عندما تقدم شركة ما واجهة برمجة تطبيقات لمستخدميها، فهذا يعني ببساطة أنها أنشأت سلسلة من عناوين URL الخاصة التي تعرض البيانات فقط كاستجابة.

غالبًا ما يمكن إرسال مثل هذه الطلبات عبر المتصفح. نظرًا لأن نقل بيانات HTTP يتم في شكل نص، فسيكون المتصفح قادرًا دائمًا على عرض الاستجابة. على سبيل المثال، من خلال المتصفح، يمكنك الوصول مباشرة إلى واجهة برمجة تطبيقات GitHub (https://api.github.com/users/petrgazarov)، بدون رمز وصول، وتلقي هذه الاستجابة بتنسيق JSON:

يعرض المتصفح استجابة JSON بشكل مثالي، والتي يمكن إدراجها في الكود. من السهل جدًا استخراج البيانات من هذا النص لاستخدامها وفقًا لتقديرك.

بعض الأمثلة الأخرى لواجهة برمجة التطبيقات (API).

كلمة "التطبيق" يمكن أن يكون لها معاني مختلفة. في سياق واجهة برمجة التطبيقات، هذا يعني:

  • قطعة من البرمجيات ذات وظيفة محددة،
  • الخادم بأكمله أو التطبيق بأكمله أو مجرد جزء منفصل من التطبيق.

يمكن لأي برنامج يمكن تمييزه بوضوح عن البيئة أن يحل محل الحرف "A" في اختصار باللغة الإنجليزية، ويمكن أن يحتوي أيضًا على نوع من واجهة برمجة التطبيقات (API). على سبيل المثال، عندما يقوم أحد المطورين بتطبيق مكتبة تابعة لجهة خارجية في التعليمات البرمجية، فإنها تصبح جزءًا من التطبيق بأكمله. باعتبارها قطعة برمجية مستقلة، ستحتوي المكتبة على نوع من واجهة برمجة التطبيقات (API) التي تسمح لها بالتفاعل مع بقية كود التطبيق.

في التصميم الموجه للكائنات، يتم تمثيل التعليمات البرمجية كمجموعة من الكائنات. في التطبيق، يمكن أن يكون هناك المئات من هذه الكائنات التي تتفاعل مع بعضها البعض. كل واحد منهم لديه مجموعة API الخاصة به عامخصائص وطرق التفاعل مع الكائنات الأخرى في التطبيق. قد يكون للكائنات أيضًا خاصالمنطق الداخلي المخفي عن البيئة وليس واجهة برمجة التطبيقات.