صمّم، حسّن، وتفوّق .. كيف تبني APIs بلا أخطاء

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

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

ضمن سلسلة MobileDevMeetup الشهرية، ألقى المهندس رائد قضماني بتاريخ ١٥ شباط ٢٠٢٥ محاضرة مميزة بعنوان:
Flawless Mobile APIs – Design, Optimize, Dominate
بحضور 30 مشاركاً من مطوري البرمجيات، تناولت الجلسة كيفية تصميم وتطوير واجهات برمجية (APIs) عالية الجودة موجهة خصيصاً لتطبيقات الموبايل، بأسلوب عملي وواضح.

الفهرس:

  1. أساسيات تصميم APIs لتطبيقات الجوال
  2. التعامل مع الأخطاء وتحليل الأداء
  3. توليد SDKs تلقائياً
  4. تسريع أداء التطبيقات باستخدام APIs
  5. APIs as SDK ؟

محاور الجلسة:

أولاً: أساسيات تصميم APIs لتطبيقات الجوال

تم التركيز على أهمية تبسيط الواجهات (APIs) للمطورين على الطرف الآخر، عبر:

  • اعتماد REST كخيار بسيط وفعال: لأنه مدعوم على نطاق واسع وسهل الفهم.
  • التحكم بالبيانات: من خلال تقنيات التصفح (Pagination)، والفلترة، والترتيب، لتقليل حجم البيانات المُرسلة وتحسين الأداء.

  • إدارة النسخ (Versioning): تفيد للحفاظ على التطبيقات القديمة دون تعطيلها عند تحديث الواجهة. ولها عدة طرق منها  URL, Parameter, Header, Media Type, Subdomain.

ولكن السؤال الآن، إذا كانت برمجة الـ API مسؤولية مطور الـ Backend فما هي مسؤولية مطور تطبيق الجوال ؟

الواجهة وحدها لا تكفي. على مطوري التطبيقات التعامل مع عدة أمور:

  • إظهار الأخطاء بشكل مفهوم للمستخدم، عن طريق عرض رسائل واضحة عند فشل الـ API مثلاً.
  • التعامل مع انقطاع الإنترنت (Offline) والتخزين المؤقت (Caching) لتحسين تجربة المستخدم عند فشل التواصل مع السيرفر.
  • تأمين البيانات (Security) باستخدام Tokens و SSL، فهذه مسؤولية تقع على عاتق الطرفين (السيرفر و التطبيق).
  • إدارة الحدود (Rate Limiting) لتفادي الحظر من السيرفر، لا يجب إغراق السيرفر بطلبات لا داعي لها.
  • مراقبة الأداء داخل التطبيق باستخدام أدوات تتبع وتحليل.

ثانياً: التعامل مع الأخطاء وتحليل الأداء

لتفادي مشاكل التطبيق عند التواصل مع السيرفر، لا بد من:

  • استخدام أكواد HTTP صحيحة (مثل 200، 404، 500)
  • توحيد شكل رسائل الخطأ: يشمل الكود، الرسالة، والتفاصيل
  • مراقبة مؤشرات مهمة، مثل:
    • زمن استجابة الـ API: الوقت المستغرق لمعالجة الطلب.
    • معدل الأخطاء: عدد مرات حدوث أخطاء من نوع 4xx و 5xx.
    • حجم الاستجابة: مهم جدًا لتطبيقات الجوال، إذ إن الحزم الكبيرة قد تؤثر على الأداء.
    • تفاعلات المستخدمين: تتبّع كيفية تفاعل المستخدمين مع التطبيق، وما إذا كانوا يواجهون مشكلات متعلقة بالـ API.

ثالثاً: توليد SDKs تلقائياً

بدلاً من كتابة كود يدوياً، يمكن توليد مكتبات جاهزة (SDKs) من ملفات Swagger أو OpenAPI لتسهيل دمج الـ APIs في تطبيقات Android وiOS. تم ذكر أدوات مثل:

هذه الأدوات تقلل الوقت وتحافظ على التناسق بين الواجهة والتطبيق.

رابعاً: تسريع أداء التطبيقات باستخدام APIs

هناك بعض الأمور التي تساعد في تحسين تجربة المستخدم، منها:

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

  • استخدام Pagination وتأخير الطلبات السريعة (Debouncing) في عمليات البحث أو الضغطات المتكررة، هذا يعني بدلاً من إرسال طلب البحث عند كل حرف، يمكن أن ننتظر حتى تكتمل الكلمة، مثل:

  • الاعتماد على اتصالات HTTP المتقدمة (HTTP/2 وHTTP/3) لتوفير زمن أسرع
  • دعم الطلبات غير المتزامنة لتحميل المحتوى بمرونة
  • استخدام Caching وCDN لتخزين البيانات مؤقتاً
  • ضغط البيانات باستخدام تقنيات مثل GZIP لتقليل استهلاك الإنترنت

خامساً: APIs as SDK ؟

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

في هذه الطريقة تظل المعالجة والتنفيذ على السيرفر، لكن التطبيق يتضمّن نسخة من هيكل البيانات (Model classes) المستخدمة على السيرفر مما يوفّر عدة فوائد، منها:

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

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

الختام:

شكّلت الجلسة فرصة مهمة لمطوري تطبيقات الجوال للتعرّف على ما يحدث في الطرف الآخر من عالمهم. فالتعاون مع مبرمج الـ Back-end يُعدّ ضرورياً لاستكمال العمل، ومن المهم أن يكون الجميع على دراية بالصورة الكاملة، لما لذلك من أثر كبير في تحسين الإنتاجية وتعزيز التعاون بين الفرق.واختتم المحاضر الجلسة بجملة مُلهمة:
“المبرمجون المميزون يرون الأنظمة كقصص تُروى، لا مجرد تعليمات تُكتب.”

ألبوم الصور


اكتشاف المزيد من Mobile Dev Meetup

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

2 Comments Add yours

  1. يقول Marwa:

    من اكتر الجلسات يلي حضرتها وكان فيها حلول لشغلات بتاخد وقت بالتطوير بشكل يسرع الاداء خصوصي لما يكون مستويات متقدمة
    عنجد كانت معلومات جديدة وعملية وغير موجودة
    شكرا كتير لكل مين ساهم بهالجلسة ويعطيكم العافية

    1. يقول Noor Orfahly:

      الله يعافيك .. سعيدة انو الجلسة نالت اعجابك

اترك رد