تطوير واجهات برمجية

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

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

تُصمَّم حدود المعدل والمصادقة حول من يستدعي الواجهة فعلاً — لوحة داخلية أو تطبيق موبايل بتدفق رمز تحديث أو تكامل شريك بمفاتيح API — بدل سياسة واحدة للجميع. نقاط البكسل وإعادة التوجيه في نظام تتبع بريد هي النسخة القصوى من ذلك: بلا مصادقة عمداً، لأنها على مسار كل فتح بريد متتبَّع، لكنها واعية بالمعدل حتى لا يُضعف اندفاع حركة من حملة واحدة الحملات الأخرى.

تُكتب الوثائق للفريق الذي سيستهلك الواجهة، لا تُولَّد كفكرة لاحقة — نقاط النهاية والحمولات المتوقعة وأشكال الأخطاء التي يستطيع مطور واجهة أو موبايل البناء عليها دون هندسة عكسية للخلفية.

مشاكل الأعمال

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

منهج التطوير

  1. موارد ومصادقة وأخطاء وإصدارات — عقد تتمسك به فرق أخرى، موثّق بما يكفي حتى لا يحتاج مستهلك جديد مكالمة ليفهم كيفية استخدامه.
  2. تصميم أشكال الأخطاء والتصفح الصفحي مرة واحدة مسبقاً، حتى تتبع كل نقطة نهاية جديدة النمط نفسه بدل ابتكار نمطها الخاص.
  3. مركزة المصادقة والتفويض في وسيط لا في كل متحكم، حتى تُعرَّف قاعدة صلاحية مرة واحدة وتُطبَّق باتساق في كل مكان.
  4. إضافة حد معدل وتسجيل طلبات منذ البداية، حتى يكون ارتفاع الحركة أو عميل مسيء مرئياً ومكبوحاً بدل أن يُسقط الواجهة.
  5. توفير بيئة صندوق رمل ببيانات اختبار واقعية، حتى يستطيع شريك بناء واختبار تكامله دون لمس الإنتاج.
  6. اختيار اتفاقية تسمية وشكل استجابة واحدة للواجهة كاملة منذ اليوم الأول، وتطبيقها على كل نقطة نهاية لاحقة، حتى يكون المورد الجديد متوقعاً قبل قراءة توثيقه حتى.

ما تحصل عليه

  • واجهة واحدة للويب والموبايل تبقى مستقرة مع نمو المنتج، حتى لا يضطر إصدار موبايل لمجاراة كل تغيير في الخلفية.
  • شركاء وفرق داخلية تبني على نفس العقد الموثّق بدل الهندسة العكسية للسلوك من مجموعة Postman أُرسلت مرة واحدة.
  • واجهة تصمد أمام ارتفاع الحركة أو عميل سيّئ التصرف بدل أن تسقط معه.
  • إصلاحات أمنية تُطبَّق مرة واحدة في الوسيط، بدل ملاحقتها عبر عشرات نقاط النهاية على أمل ألا يُفوَّت أحدها.
  • شركاء يستطيعون البناء والاختبار على صندوق رمل بدل التجريب مباشرة على بيانات الإنتاج.
  • نقاط نهاية جديدة تبدو مألوفة بمجرد أن يراها عميل، لأنها تتبع نفس اتفاقية بقية الواجهة.
  • مفاتيح API مقيّدة بدقة لما يحتاجه التكامل فقط، حتى يكون التسريب حادثة محتواة لا اختراقاً كاملاً.
  • أخطاء تكامل أقل يبلّغ عنها الشركاء، لأن الواجهة تتصرف بنفس الطريقة في كل مكان بدل مفاجأتهم في نقطة النهاية الوحيدة التي لم يختبرها أحد بعناية.

مشاريع مختارة

أسئلة شائعة

REST or GraphQL?

REST for most business products. GraphQL when many clients need very different slices of the same graph. I choose based on the consumers, not fashion.

ابدأ مشروعاً →