تقنيات هندسة برمجيات مايو 24, 2024
أمضيت سبعة وعشرين عاماً في مجال تطوير أنظمة وحلول الأعمال، وتعرفت خلالها على أنماط مختلفة لتصميم تطبيقات الأعمال. اعتنقت MVC كنموذج لهندسة الأنظمة وذلك في بداياتي عام 1998م. كان ذلك مع بداية تعرفي على شبكة الانترنت، حيث كنت استخدام الانترنت منذ عام 1997م بفضل وصلة أمدنا بها مستشفى الملك فيصل التخصصي آنذاك. لقد فتحت الانترنت أمامي آفاق واسعة ومنها تعلم تصميم الأنظمة بأحدث الأساليب والطرق.
تطورت معرفتي في مجال تطوير وهندسة الأنظمة مع ظهور دار نشر أمريكية متخصصة في كتب التقنية وتدعى Apress. كنت أشتري كتبها من موقع أمازون الذي كان يبيع الكتب واسطوانات DVD فقط آنذاك. معها تعرفت على واجهة برمجة التطبيقات. تنامت المعرفة أكثر وأكثر وقد اصبحت API اليوم أكثر تنوعاً وتطوراً مقارنة بالماضي.
إن الذي دعاني الى كتابة هذه التدوينة هي أني لمست فهماً منقوصاً لدى بعض المطورين ومصممي الحلول. صحيح أن الكل يعرف ماهية API وكيف تعمل، ولكن لا يفهمها بالعمق المتوقع من مبرمج محترف. أيضاً قد يجهل البعض حالات الاستحدام الأنسب لكل نوع وكل بروتوكول للـ API. هذه التدوينة التي أضعها بين يديك هي جهد بسيط يهدف إلى أن تعرف أكثر، ولكنها لا تغنيك عن البحث والتعلم الذاتي. فما حك جلدك مثل ظفرك.
مدخل إلى واجهات برمجة التطبيقات (APIs)
تُعد واجهات برمجة التطبيقات (APIs) جزءًا أساسيًا من التكنولوجيا التي تشغّل الكثير من المحتوى الذي نستخدمه يوميًا على الويب، وتُشكّل أيضًا أساسًا للتواصل بين الأنظمة والخدمات في عالمنا الرقمي الحديث. بفضل واجهات API، يمكن للمطورين تمكين تفاعل الأنظمة والمنصات البرمجية مع بعضها البعض، مما يعزز تطوير ميزات جديدة وقدرات مبتكرة.
تلعب واجهات API دورًا حيويًا في تسهيل التكامل بين التطبيقات المختلفة، سواء كانت أنظمة داخلية أو خدمات خارجية، مما يعزز الكفاءة ويسرع الابتكار. على سبيل المثال، تُمكّن واجهات API التطبيقات من الوصول إلى البيانات والخدمات من مصادر متعددة دون الحاجة إلى إعادة بناء هذه الوظائف من الصفر، مما يوفر الوقت والموارد.
في هذا المقال، سنقوم بفحص معمق لأبرز بروتوكولات API التي يستخدمها المطورون بكثرة حول العالم. سنستعرض الأسباب التي تجعل هذه البروتوكولات الخيار الأفضل للمطورين، والتنوع والوفرة في بروتوكولات API، وكيفية عمل هذه البروتوكولات. بالإضافة إلى ذلك، سنقدم سيناريوهات عملية من واقع الأعمال لتوضيح الدور الأساسي لبروتوكولات API في مشاريعك التقنية.
من خلال هذا الفهم الشامل، ستتمكن من اختيار البروتوكول الأنسب لمشاريعك وتطوير تطبيقات أكثر قوة وفعالية.
إذا كنت مبتدئ في البرمجة وتريد معرفة أساسيات واجهة برمجة التطبيقات فإني قد وضعت شرح خاص بك وهو مُبسط في أسفل صفحة هذه التدوينة. كما وضعت مثال تطبيقي بلغة Java حيث أنها الأكثر استخداماً وشيوعاً في السعودية والمنطقة العربية بشكل عام

تصنيف API حسب المُستخدمين لها
هناك عدة أنواع مختلفة من واجهات برمجة التطبيقات (APIs) التي تخدم أغراضًا متعددة وتُصمم لحالات استخدام مختلفة. تعتمد هذه الواجهات على بروتوكولات ومعايير متنوعة لتوفير الوصول إلى البيانات والخدمات، مما يساعد المطورين على بناء تطبيقات متقدمة ومعقدة. من خلال استخدام هذه الواجهات، يمكن للشركات تحسين كفاءة العمليات، وتعزيز تجربة المستخدم، وتطوير حلول مبتكرة. فيما يلي بعض الأنواع الأكثر شيوعًا لواجهات برمجة التطبيقات على الويب:
واجهات برمجة التطبيقات المفتوحة (Open APIs)
يستخدم مصمموا الحلول واجهات برمجة التطبيقات العامة أو المفتوحة لجعل بعض أو كل وظائف أنظمتهم متاحة للاستخدام من قبل أنظمة أخرى. إنهم يتيحون واجهات الوصول إلى بيانات الأنظمة وفي نفس الوقت يتم منع المطورين من الوصول إلى الشفرة المصدرية Source Code.
يجد المطورون هذه الواجهات مفيدة في إنشاء تطبيقات جديدة تبنى فوق هذه الأنظمة التي أتاحت الوصول اليها من خلال API، يتم ذلك مع الاعتماد بشكل أساسي على واجهات RESTful التي تطلب التحقق من الهوية. لقد شهد استخدام واجهات برمجة التطبيقات العامة ارتفاعًا في الطلب، مما أدى إلى إنشاء عدد لا حصر له من التطبيقات والخدمات المبتكرة. أمثلة على Open APIs تشمل Twitter API وGoogle Maps API. تزايد استخدام هذا النوع من API في السعودية سواءئ من خلال أنظمة وحلول موجودة على SaaS. كذلك من قبل الجهات الحكومية كون الربط والتكامل هو من مستهدفات رؤية 2030 وأجد أقرب مثال منصة العنوان الوطني. حيث يمكن لشركات الشحن وتوصيل الشحنات الربط والتكامل مع منصة العنوان الوطني لتصل لموقع عميل على الخريطة ومن ثم غيصال شحنته. كذلك ما تقدمة المنصة السعودية للبيانات المفتوحة هو مثال آخر.
واجهات برمجة التطبيقات الشريكة (Partner APIs)
تُمكّن واجهات برمجة التطبيقات الشريكة المنظمات من الوصول إلى البيانات عبر نموذج B2B. يعزز هذا النهج قدرة الشركات على إنشاء ميزات فريدة داخل تطبيقاتها أو خدماتها، وذلك من خلال استخدام API الجهة التي بينهم وبينها إتفاقيات شراكة. يُساعد هذا النوع من الترابط الشركات على تقليل التكاليف بفعالية وكفاءة أكبر. من خلال دمج البيانات والخدمات القيمة، مثل سحب ملاحظات العملاء عن منتجات من موقع أمازون. أمثلة على Partner APIs تشمل PayPal API وAmazon MWS API.
واجهات برمجة التطبيقات الداخلية (Internal APIs)
إن واجهة برمجة التطبيقات الداخلية هي نوع من واجهات برمجة التطبيقات المخصصة للاستخدام الداخلي فقط ومن قبل مطوري المنظمة نفسها. الهدف هو تيسير هذه الواجهات لنقل البيانات بين المكونات المختلفة للنظام، مما يمكّن من أتمتة العمليات وكذلك الربط بين الأنظمة. مثلا يمكن لنظام الموارد المؤسسية ERP التكامل والربط مع نظام ضبط هوية المستخدمين مثل Microsoft Active Directory.
واجهات برمجة التطبيقات الخارجية (External APIs)
تشمل واجهات برمجة التطبيقات الخارجية (External APIs) تلك التي يتم توفيرها من قبل أطراف خارجية للمطورين لاستخدامها في تطبيقاتهم. هذه الواجهات تُتيح الوصول إلى خدمات ووظائف متخصصة تم تطويرها بواسطة مزودين خارجيين. تشمل الأمثلة على ذلك خدمات مثل Google Analytics API، والتي تتيح للمطورين دمج قدرات تحليلات الويب في تطبيقاتهم بسهولة.
واجهات برمجة التطبيقات السحابية (Cloud APIs)
تتيح واجهات برمجة التطبيقات السحابية للمطورين التفاعل مع خدمات الحوسبة السحابية وإدارتها. يمكن استخدام هذه الواجهات لدمج وظائف التخزين السحابي، الحوسبة، قواعد البيانات، والتعلم الآلي في التطبيقات. تشمل الأمثلة Amazon Web Services (AWS) APIs وMicrosoft Azure APIs وGoogle Cloud APIs.
تصنيف API حسب الهندسة المعمارية Architecture
واجهات برمجة التطبيقات الأحادية (Monolithic APIs)
تعتبر معظم واجهات برمجة التطبيقات العامة (Public APIs) أحادية (Monolithic APIs)، مما يعني أنها مصممة كقاعدة كود موحدة ومتماسكة توفر الوصول إلى مصدر بيانات معقد. هذه الواجهات مألوفة لمعظم مطوري الويب، وغالبًا ما تتبع بنية قاعدة البيانات العلائقية أو تطبيق MVC (model-view-controller). تقدم وظائف متوقعة عبر مجموعة من الموارد، وعادة ما تظل مستقرة إلى حد ما بمرور الوقت لأنها تخدم العديد من حالات الاستخدام لمجموعة متنوعة من المستخدمين.
ومع ذلك، كما يوحي الاسم، يمكن أن تكون واجهات برمجة التطبيقات الأحادية صعبة التوسع أو إعادة الهيكلة، لأن الكثير من البيانات متشابكة داخلها. عندما يقلق المطورون بشأن إطلاق تغييرات يُمكنني وصفها بالمُدمرة، فإنهم غالبًا ما يعملون مع هياكل أحادية، حيث يمكن أن يكون لتغيير حتى التفاصيل الصغيرة عواقب سيئة غير متوقعة.
واجهات برمجة التطبيقات للخدمات المصغرة (Microservices APIs)
هذاالموضوع ساخن في السعودية في العاميين الماضيين. هذه الهندسة لل API هي البديل الأكثر منافسة للهيكل الأحادي Monolithic وتسمى بواجهة برمجة التطبيقات للخدمات المصغرة (Microservices API). الفكرة بكل بساطة هي أن تخدم كل واجهة برمجة تطبيقات خدمة صغيرة محددة. مثال ذلك أن تطور API يقوم بخدمة إنشاء حساب عميل وتطور API آخر ينفذ خدمة التحقق من جنسية العميل مثلا. هنا تقوم بتفتيت خدمات النظام إلى خدمات مصغرة يمكن إعادة إستخدامها في خدمات أخرى أكبر.
تستخدم معظم فرق التطوير التي تعتمد على عملية CI/CD (التكامل المستمر/التطوير المستمر) العديد من الخدمات المصغرة كجزء من دورة حياة الكود الخاصة بها، كل منها يخدم غرضًا مستقلاً ومحددًا. على سبيل المثال، قد يكون لدى شركة تجارة إلكترونية خدمة مصغرة داخلية توفر بيانات المخزون، وأخرى للتحقق من تحديد موقع الموظفين عند تغييرات بيانات المخزون، بينما يقوم مطورو البرمجيات بدفع الكود تلقائيًا لاستدعاء الخدمات المصغرة للاختبار والإدارة. مع تغير مخطط سير العمل Workflow. كما يُمكن تبديل الخدمات المصغرة الفردية أو تحديثها أو إيقافها دون التأثير على أجزاء أخرى من النظام.
واجهات برمجة التطبيقات المركبة (Composite APIs)
تجمع واجهة برمجة التطبيقات المركبة بين عدة واجهات برمجة تطبيقات في واجهة واحدة وتوفر للمطورين رؤية موحدة للبيانات والعمليات أو الإجراءات من مصادر مختلفة. يُبسط هذا التكامل الوصول إلى البيانات واستخدامها من خلال تسهيل التفاعلات مع التطبيقات المعقدة.
تُقدم واجهات برمجة التطبيقات المركبة ممارسات برمجية فعالة للمطورين، حيث لا يحتاجون إلى كتابة كود منفصل لكل واجهة برمجة تطبيقات فردية. يمكن لواجهة برمجة التطبيقات المركبة تبسيط عملية التطوير وتوفير حلول فعالة من حيث التكلفة من خلال تقديم واجهة موحدة للوصول إلى عدة واجهات برمجة تطبيقات. تعد هذه الواجهات مفيدة بشكل خاص في إنجاز التكامل بين أنظمة المنظمة الواحدة عندما تحتاج إلى جمع البيانات وتفعيل الاجراءات بين أنظمة متعددة مثل ERP، CRM، وخدمات الويب المختلفة. من الأدزات التي تساعد في إنجاز ذلك العمل وتعتبر حديثة وسهلة الاستخدام وتميل إلى أن تكون من نوع Low Code نجد مثل Zapier وهو خدمة سحابية تستخدم لربط بين الأنظمة وكذلك أداة Power Automate من شركة Microsoft.
تأتي الخدمات المصغرة مع عيب واضح، وهو أنها تولد عددًا هائلًا من تنفيذ ونداء API فردية. كما تقدم نوعان إضافيان من بنية API حلولًا لهذه المشكلة. واجهة برمجة التطبيقات المركبة (Composite API) هي نوع خاص من واجهات برمجة التطبيقات يسمح لك ببجعل API الواحد يتفاعل مع أكثر من endpoint بنداء API واحدة ومن هنا جاء وصفها بأنها مركبة. خذ هذا السيناريو، عندما نريد إنشاء حساب مستخدم جديد فسوف نقوم بإرسال بيانات مدخلة كدفعة واحد لـ API مركب واحد وهو بدورة سوف يستدعي أكثر من API ويعطي لكل واحد منها بيانات مُدخلة تخصه ليقم بعمله. بهذه الطريقة حققنا الدقة وكذلك قللنا من حجم البيانات المرسلة ومن كثرة استدعاء ونداء أكثر من API لو كانت API منفصلة وليست مركبة كما وضحت. من الاستخدامات الشائعة هي أن تستخدم واجهات برمجة التطبيقات المركبة غالباً في التحقق من الهوية وتنسيقات البيانات من خلال بوابة تسمى API Gateway.
واجهات برمجة التطبيقات الموحدة (Unified APIs)
تشبه واجهة برمجة التطبيقات الموحدة (Unified API) واجهة برمجة التطبيقات المركبة. لكن بدلاً من تجميع النداء لأكثر من API في API مركب واحد فإن هذا النوع الموحد الذي اشرحه الآن يجمع نداءات API ذات الصلة مع واجهات برمجة تطبيقات متعددة. تعتبر واجهات برمجة التطبيقات الموحدة شائعة بين واجهات برمجة التطبيقات الشريكة. تعد تطبيقات التمويل الشخصي مثالًا جيدًا لتوضيح كيفية عملها:
تخيل أنك تنظر إلى تطبيق للتخطيط المالي، حيث لديك عدة حسابات مختلفة مرتبطة. قد يكون لكل شركة تحتفظ بتلك الحسابات بروتوكول تحقق وتنسيق بيانات مختلف. يمكن للتطبيق إرسال طلب API منفصل لكل جهة للحصول على أرصدة الحسابات الحالية، ولكن هذا قد يخلق الكثير من الشيفرة المكررة وتعقيدات في التداخل، وقد يعرض المزيد من البيانات الحساسة في المتصفح. من هنا تعمل واجهة برمجة التطبيقات الموحدة كبيت مقاصة، مما يسمح لتطبيق التخطيط المالي الخاص بك بإرسال طلب HTTP واحد إلى نقطة نهاية endpoint واحدة. بعد ذلك، تقوم الخوادم الآمنة بمعالجة البيانات من ذلك الطلب إلى التنسيقات المطلوبة لكل مؤسسة مالية وإرجاع البيانات إلى تطبيق العميل بطريقة يمكن التنبؤ بها ومتحكم بها. بصراحة اراها طريقة ذكية.
ما هي بروتوكولات API وما أنواعها؟
عند التكامل بين نظامين باستخدام واجهة برمجة التطبيقات (API)، فإنه يتم فرض إرشادات صارمة تُعرف باسم بروتوكولات API. تهدف هذه البرتوكولات لتنظيم التفاعل بين النظامين المراد ربطهما.
تهدف هذه القواعد الصارمة كما وصفتها إلى تحسين كفاءة تبادل البيانات بين الأنظمة المختلفة من خلال أوضاع اتصال موحدة. بعض متطلبات بروتوكولات API هي تحديد تنسيقات لتبادل الطلبات/الاستجابات أو أنواع البيانات المسموح بمشاركتها، وإجراءات التحقق من الهوية صاحب الطلب، أو تدابير الأمان لنقل المعلومات بأمان. إن اتباع هذه المعايير سيضمن تفاعلات متسقة مع ضمان الأداء الموثوق. سيتضح كلامي أكثر مع عرض أنواع البرتوكولات في الفقرات التالية.
REST APIs
في المشهد الحالي، تعتمد غالبية واجهات برمجة التطبيقات على برتوكول REST. تستخدم تطبيقات ويب واجهات برمجة التطبيقات REST بشكل واسع. هذه الواجهات متعددة الاستخدامات سواءً لإرسال أو استرجاع البيانات بين الأنظمة المترابطة عبر برتوكول الويب الشهير HTTP وذلك بصيغ مختلفة لنقل البيانات مثل JSON، XML، وplaintext.
تمثل واجهات REST (Representational State Transfer) مثالًا على هذه الواجهات لأنها تستخدم المبادئ التي تستند إليها تصميم REST المعماري عند التواصل بين العملاء والخوادم. يتضمن هذا التصميم مجموعات محددة مسبقًا من المتغيرات parameters الخاصة بكل عملية وذلك عبر طرق HTTP القياسية (HTTP Mehods). هذه الطرق مثل GET، POST، PUT، أو DELETE مع السماح بالتوسع.
من خلال واجهات برمجة التطبيقات، يسهل الوصول إلى البيانات المهيكلة بصيغة JSON أو XML مع ضمان الأمان والوصول إلى الموارد. يساعد الالتزام بمبادئ REST المطورين في إنشاء أنظمة API موثوقة وسهلة الاستخدام يمكن استخدامها عبر الأجهزة والمنصات المختلفة.
SOAP APIs
يمكن بناء خدمات الويب Web Service باستخدام واجهات برمجة التطبيقات (APIs) المعتمدة على SOAP، وهي التي تعتمد على رسائل XML لتمكين الاتصال بين تطبيقين عبر الشبكة. إن SOAP تعني بروتوكول الوصول إلي كائن بسيط وبالانجليزية هي إختصار لـ Simple Object Access Protocol. أعتقد أن أغلب المبرمجين في المنطقة العربية يعرفون هذا البرتوكول بإسم Web Service.
لدى SOAP قواعد صارمة ومعايير رسائل صارمة يمكن أن تجعلها أكثر أمانًا من بروتوكولات مثل REST. تُستخدم هذه الأنواع من واجهات برمجة التطبيقات بشكل متكرر في التطبيقات المؤسسية، خاصة لمعالجة المدفوعات وإدارة العملاء، نظرًا لأنها تتميز بطبيعتها الآمنة للغاية.
يمكن بفضل واجهات برمجة التطبيقات (APIs) المعتمدة على SOAP إنشاء خدمات ويب يمكن الوصول إليها من قبل عملاء مختلفين دون أن تكون محددة بمنصة معينة. تُعد طبيعتها الآمنة ميزة هامة أخرى جعلت SOAP تُستخدم على نطاق واسع لنقل المعلومات الحساسة للغاية.
GraphQL APIs
تم تطوير GraphQL من قبل Facebook وهو الآن مفتوح المصدر، ويعمل ككلٍ من لغة استعلام (query language) ووقت تشغيل على الخادم (server-side runtime) لواجهات برمجة التطبيقات (APIs)، مما يسمح للعملاء باستخراج البيانات التي يحتاجونها بالضبط، مما يمثل تبايناً مع استرجاع البيانات الثابتة في خدمات RESTful التقليدية.
إذا كنت تبحث عن حل API سريع، ففكر في GraphQL. هذه الطريقة الحديثة تقضي على الحاجة إلى الاستفسارات الزائدة من العملاء من خلال الاستفادة من قدراتها المخصصة لتعريف الاستعلامات، مما يوفر المرونة اللازمة أثناء تجميع البيانات.
على عكس واجهات برمجة التطبيقات REST التقليدية، يمكن للمطورين الاستفادة من واجهة قادرة على “استعلام البيانات” حسب الطلب بسهولة. في الأساس، مع GraphQL APIs، يطلب المستخدمون كل ما يريدونه من خدمة الخلفية كلها في نقطة API واحدة. هذا يساعدهم في تجنب المكالمات الزائدة لواجهة برمجة التطبيقات. من خلال تمكين استرجاع البيانات الدقيقة، تمتلك GraphQL APIs القدرة على تقليل طلبات البيانات وجعل التطبيقات أكثر كفاءة. بالإضافة إلى ذلك، تُمكّن المطورين من دمج الحقول أو الأنواع الجديدة في تطبيقاتهم بسرعة، مما يخلق عملية تطوير سريعة ومنظمة.
Webhook APIs
تُتيح WebSockets مسارات اتصال ثنائية الاتجاه تظل مفتوحة باستمرار لنقل البيانات في الوقت الفعلي، مما يميزها عن نمط الطلب والاستجابة المنفصل في HTTP التقليدي.
تتمحور وظيفة Webhook APIs بشكل أساسي حول تسهيل نقل البيانات في الوقت الفعلي والتكامل السلس بين تطبيقات الويب المختلفة. مثال على استخدامها سيكون إرسال إشعارات دفع لتنبيه المستخدمين حول رسائل البريد الإلكتروني الواردة. بمجرد حدوث أحداث محددة مسبقًا، تقوم هذه الواجهات تلقائيًا بإطلاق رسائل أو “hooks” التي تبدأ الاتصال بين برامج مختلفة.
تمكن Webhook APIs التطبيقات من البقاء متزامنة والاستجابة للأحداث فور حدوثها. تُستخدم هذه الواجهات بشكل واسع في برمجة الأحداث حيث يمكن للبرمجيات تبادل البيانات في الوقت الفعلي. يمكن أن تكون لها أغراض متنوعة مثل إرسال إشارة للمستخدم بعد النقر على رابط أو تحديث متجر إلكتروني بعناصر جديدة دون أي تدخل يدوي.
RPC APIs
من خلال استخدام واجهات برمجة التطبيقات (APIs)، يمكن للتطبيقات تنفيذ وظائف بعيدة بسلاسة عبر مسافات طويلة حتى عندما تكون مستضافة على أجهزة مختلفة. في الأنظمة الموزعة وهياكل الخدمات المصغرة حيث تكون هذه المرونة ضرورية للغاية، يعتمد بشكل متزايد على واجهات استدعاء الإجراءات البعيدة (RPC) التي يتبع تنفيذها عادة بروتوكولات مثل JSON-RPC أو XML-RPC.
في جوهرها، يعتمد بروتوكول RPC على تمكين نقل البيانات بكفاءة بين عقد الحاسوب المتصلة عبر الشبكات التي تتميز بطرز مختلفة. يحدث هذا التفاعل عبر نموذج العميل-الخادم القياسي والبسيط حيث تستجيب الخوادم لطلبات قادمة من العملاء. تسهل الرسائل التي تحتوي على طلبات للقيام بمهمة معينة من قبل الخادم وإعادة الاستجابة، والتي تعرف باسم استدعاءات الإجراءات البعيدة، عملية الاتصال بين العميل والخادم. تُستخدم واجهات RPC APIs غالبًا لإدارة الموارد مثل قواعد البيانات على الأجهزة البعيدة أو للوصول إلى خدمات الويب.
توجد أنواع أخرى من واجهات برمجة التطبيقات أيضًا، لكن هذه هي بعض الأنواع الأكثر شيوعًا واستخدامًا. يعتمد اختيار نوع واجهة برمجة التطبيقات على المتطلبات المحددة للتطبيق والبيانات التي يتم الوصول إليها.
بروتوكولات API أخرى
هناك مجموعة من البرتوكلات التي ساذكر نبذة مبسطة عنها وأترك لك التوسع والبحث فيها أكثر.
- برتوكول WebSocket يعمل على تمكين مسارات الاتصال ثنائية الاتجاه والتي هي مفتوحة باستمرار لنقل البيانات في الوقت الفعلي. هذا يجعلها تختلف عن الأنماط التي تنقل بناء على وصول طلب من نظام ثم الاستجابة له.
- بروتوكول Sockets، أتذكر أن كتب التقنية العربية التي كنت أقرأها فيما بعد عام 2000 تسمة كلمة Sockets بالمقابس، ترجمة ظريفة. لكل برامج شيء أفياش توصيل تستخدم كواجهة لاتصال الشبكات بين التطبيقات وذلك من خلال أجهزة ذات مواقع مختلفة، تفهم من كلامي هذا أن هذا البرتوكول خاص بتطوي برامج الشبكات.
- برتوكول SSE (Server-Sent Events) يستخدم حتى نمكّن الخوادم من دفع التحديثات في الوقت الفعلي عبر بروتوكول الاتصال HTTP.
- بروتوكول gRPC (gRPC Remote Procedure Call) طورته شركة جوجل ليكون سريع في نقل البيانات بين أنظمة أو خدمات ويب موزعة على عدة شبكات.
- برتوكول MsgPack (MessagePack) خاص بنقل سلسة من البيانات الثنائية binary data بين أنظمة تتواجد في منصات اتصالات مختلفة.
ما هي API Methods؟
إن API Methods وتحديداً كلمة Methods يستخدمها المبرمجون عند نعاملهم مع لغات البرمجة التي تدعم الكائنات الموجهة Object Oriented language. بنفس الطريقة تستخدم واجهات برمجة التطبيقات (APIs) طرق مختلفة للطلب من API القيام بعمل محدد به تُحدد كيفية تفاعل تطبيق المستخدم Client مع الأنظمة عن طريق الإنترنت. تركز هذه الأساليب أو الطرق بشكل أساسي على الحصول على المعلومات المخزنة في تلك الأنظمة بغرض التعامل معها وإدخالها في عمليات أخرى. بالتحديد، هناك خمسة أنواع شائعة من طرق طلب API وهي API: GET، POST، PUT، PATCH، وDELETE.
يمكن بسهولة طلب المعلومات عبر طلبات GET، بينما يمكن إنشاء تفاصيل جديدة فقط من خلال منطق POST. يجب تحديث المعلومات القديمة باستخدام بروتوكول PUT، بينما يمكن تعديلها عند الحاجة باستخدام PATCH، وسيقوم DELETE بإزالة أي ملفات زائدة. يمكن إنشاء تطبيقات قوية وديناميكية من خلال استخدام مجموعة متنوعة من الطرق التي تتميز بأغراضها وتطبيقاتها الفريدة. وفيما يلي نظرة عامة عالية المستوى على عدة أنواع من طرق API:
- طريقة GET: تسترجع المعلومات أو البيانات من مورد محدد.
- طريقة POST: ترسل البيانات ليتم معالجتها إلى مورد محدد.
- طريقة PUT: تحدّث موردًا محددًا ببيانات جديدة.
- طريقة DELETE: تحذف موردًا محددًا.
- طريقة PATCH: تحدّث جزئيًا موردًا محددًا.
- طريقة OPTIONS: تسترجع طرق HTTP المدعومة من نقطة نهاية الخادم.
- طريقة HEAD: تسترجع فقط رؤوس الاستجابة دون جسم الاستجابة.
- طريقة CONNECT: تنشئ اتصال شبكة إلى مورد، تُستخدم عادةً لنفق SSL/TLS.
- طريقة TRACE: تعيد الطلب المستلم إلى العميل، لأغراض التصحيح.
تُستخدم هذه الطرق أعلاه عادةً للتفاعل مع خدمات الويب أو تطبيقات الويب، مما يسمح للمطورين بالوصول إلى البيانات أو الوظائف من مصدر بعيد والتلاعب بها.
المبرمج المبتدئ وأساسيات API
كمبرمج مبتدئ، من الضروري فهم بعض الأساسيات حول واجهات برمجة التطبيقات (APIs)، وكيفية استخدامها في البرمجة اليومية. سأقوم بتوضيح هذه المفاهيم مع تقديم مثال بلغة البرمجة جافا. سوف أركز في شرحي للأساسيات على برتوكول REST API. لذا سوف أعيد تكرار أنواع الطرق Methods الأساسية في REST API:
- GET: استرجاع البيانات من الخادم.
- POST: إرسال بيانات إلى الخادم لإنشاء مورد جديد.
- PUT: تحديث مورد موجود بالبيانات الجديدة.
- DELETE: حذف مورد موجود.
هناك مكونات أساسية يجب توفرها عند نداء API وهي على النحو التالي:
- URL: عنوان الويب لنقطة النهاية (Endpoint) وهذه تجدها في كل توثيق مكتوب عن استخدام كل API وفرها المبرمجين لك لاستدعائها.
- Headers: معلومات إضافية يتم إرسالها مع الطلب مثل نوع المحتوى أو معلومات التحقق من هوية مستدعي API.
- Body: الجسم ويعني البيانات التي ستقوم بإرسالها عند ندائك لل API وخاصة عند استخدامك لطريقة POST وPUT.
مثال عملي بلغة جافا
لنفترض أننا نريد استدعاء REST API للحصول على قائمة من المستخدمين من خادم معين موجود على شبكة الانترنت. للقيام بذلك فيمكنك استخدام مكتبة مثل HttpURLConnection الموجودة في JDK لإجراء طلبات HTTP. ولكن، لاستخدام طريقة أكثر سهولة وحداثة، سنستخدم مكتبة مثل HttpClient المتاحة من Java 11 فصاعدًا. هذا كود جافا لإجراء طلب GET وذلك بغرض الحصول على بيانات من API مبرمجة في نظام آخر..

شرح كود البرمجة:
- إنشاء HTTP Client: قمنا بإنشاء HttpClient لإدارة الاتصال وهو بمثابة مستقبل.
- إعداد طلب GET: استخدمنا HttpRequest لإنشاء طلب GET يتفاعل مع عنوان URL معين.
- إرسال الطلب: استخدمنا client.send لإرسال نداء للمستقبل ومن ثم سنحصل على الاجابة التي ستعود الينا.
- طباعة الاستجابة: قمنا بطباعة محتوى الاجابة على وحدة التحكم.
حسنا بالمقابل نفترض أنك برمجة نظام فيه خدمات وتريد إتاحة هذه الخدمات لمطورين آخر سيطلبون منك بيانات في برنامجهم وأنت بدورك سوف تجيبهم وتعيد اليهم بيانات. هنا سوف تستخدم طريقة Post كما في المثال التالي.

شرح كود البرمجة لطريقة Post:
- إعداد بيانات JSON: كما قلت بأنه وصلنا طلب من مبرمج آخر يستخدم Get وبالتالي سوف نستجيب لطلبه وذلك بأن تقوم بإعداد البيانات في صيغة JSON لإرسالها في طلب POST.
- إعداد طلب POST: استخدمنا HttpRequest لإنشاء طلب POST إلى عنوان URL معين وأضفنا بيانات JSON في جسم الطلب.
- إرسال الطلب: استخدمنا client.send لإرسال الطلب والحصول على الاستجابة.
- طباعة الاستجابة: قمنا بطباعة محتوى الاستجابة على وحدة التحكم.
الخُلاصة
إن فهم الأنواع المختلفة من واجهات برمجة التطبيقات (APIs)، وبروتوكولات API، وطرق طلبات API أمر ضروري للمطورين الذين يتطلعون إلى إنشاء تطبيقات ويب حديثة. تُعد REST APIs النوع الأكثر شيوعًا من البروتوكولات، بينما GraphQL هو بروتوكول أحدث يتيح استرجاع البيانات بكفاءة أكبر واستهداف أدق. كما أن بروتوكولات SOAP وRPC وWebhook لكل منها استخداماتها.
عندما يتعلق الأمر بتحديد طرق طلبات API، فإن عملية اختيار البرتوكول الأنسب تعتمد على الطريقة المستخدمة وعلى نوع البيانات المراد إرسالها والإجراء المطلوب. طبعاً لكل طريقة قوتها واستخداماتها، ويجب على المطورين النظر بعناية في خياراتهم. كن ماهراً في اختياراتك.