💬 احجز عرضاً مجاناً
التكاملات

تقييم API الأرشفة: الأخطاء وإعادة المحاولة والتكرار وحدود الاستخدام

كل واجهة تنجح في العرض التوضيحي؛ ما يهم هو ما يحدث عند الانقطاع والتكرار وتجاوز الحدود.

فريق وثيقة التحريري نُشر: 10 دقيقة قراءة

قيّم واجهة API الأرشفة بسلوكها حين يسوء شيء، لا حين ينجح الطلب. أربعة أسئلة تكفي لكشف أغلب المشكلات قبل التعاقد:

  1. الأخطاء: هل تعيد الواجهة رموز حالة HTTP صحيحة وجسم خطأ ثابت البنية يمكن لبرنامج أن يقرأه؟
  2. إعادة المحاولة: هل يعرف المطوّر أي الأخطاء تُعاد وأيها لا، ومتى؟
  3. التكرار: إن أُعيد إرسال المستند نفسه بعد انقطاع، هل يُنشأ مرتين؟
  4. حدود الاستخدام: هل الحدود موثقة، وهل تعلن الواجهة تجاوزها بطريقة قياسية مع مدة انتظار؟

يوفر وثيقة REST API لربط الأنظمة المؤسسية، وتفاصيل هذه السلوكيات تُطلب مكتوبة في العرض الفني وتُختبر في بيئة تجريبية قبل القبول.

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

لماذا تقيّم الفشل لا النجاح؟

كل واجهة تنجح في العرض التوضيحي: طلب واحد، مستند واحد، شبكة مستقرة. في التشغيل الفعلي، الربط بين نظام ERP أو CRM والأرشيف يعمل آلاف المرات، وسيواجه انقطاعًا في الشبكة، وخادمًا مشغولًا، ومستندًا بحقل ناقص، ورمز دخول منتهي الصلاحية. الفرق بين ربط يُنسى بعد تشغيله وربط يستهلك فريق الدعم كل أسبوع هو كيف تتعامل الواجهة مع هذه الحالات، وكيف تُبلغ عنها.

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

الأخطاء: ما الذي يجب أن تعيده الواجهة؟

ثلاثة متطلبات أساسية تكتبها في كراسة الشروط:

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

إعادة المحاولة: أي خطأ يُعاد ومتى؟

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

تصنيف الأخطاء من حيث إعادة المحاولة (نموذج يُستكمل من توثيق المورد)
الحالةأمثلة رموزهل يُعاد؟كيف
خطأ في بيانات الطلب400، 422لايُسجَّل ويُحال لمراجعة بشرية أو لتصحيح البيانات في المصدر
فشل المصادقة401مرة واحدة بعد تجديد الرمزإن تكرر يُنبَّه المسؤول؛ قد يكون الحساب معطلًا
لا صلاحية403لاخطأ في إعداد صلاحيات الحساب التقني
تعارض (المستند موجود مثلًا)409لا يُعاد كما هويُعامل بحسب قاعدة منع التكرار
تجاوز حد الاستخدام429نعمبعد المدة التي تحددها ترويسة Retry-After إن وُجدت
خطأ مؤقت في الخادم أو البوابة500، 502، 503، 504نعمبتباعد متزايد بين المحاولات وحد أقصى لعددها
انقطاع الاتصال أو انتهاء المهلة دون ردلا رمزنعم، بشرط منع التكرارلا تعرف هل وصل الطلب أم لا؛ هنا تظهر أهمية القسم التالي

المعيار RFC 6585 يعرّف الرمز 429 بأنه إرسال طلبات كثيرة خلال مدة معينة، وينص على أن الاستجابة يجوز أن تتضمن ترويسة Retry-After تحدد مدة الانتظار قبل طلب جديد. الواجهة الجيدة تستعملها، والعميل الجيد يحترمها.

التكرار: السؤال الذي يكشف نضج الواجهة

الصف الأخير في الجدول أعلاه هو أصعب حالة: أرسل الربط المستند، وانقطع الاتصال قبل أن يصل الرد. هل حُفظ المستند أم لا؟ إن أعاد الربط الإرسال والمستند محفوظ فعلًا، فستحصل على نسختين. إن لم يُعِد والمستند غير محفوظ، فقدته.

يعرّف المعيار RFC 9110 الطريقة «متساوية الأثر» (idempotent) بأنها التي يكون أثر تكرار الطلب نفسه على الخادم مثل أثر إرساله مرة واحدة، ويعدّ منها GET وPUT وDELETE، بينما POST ليست كذلك. ولأن إنشاء مستند جديد يتم غالبًا بطلب POST، تحتاج الواجهة آلية إضافية لمنع التكرار. الآليات الشائعة:

مفتاح عمل فريد

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

مفتاح تكرار لكل طلب

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

تحقق قبل الإنشاء

يبحث الربط عن المستند أولًا ثم ينشئه إن لم يجده. أضعف الثلاثة: طلبان متزامنان قد لا يجد أي منهما الآخر فينشئان نسختين. مقبول لأحجام صغيرة فقط.

اسأل المورد صراحة: أي هذه الآليات تدعمها الواجهة؟ وأرني ذلك في بيئة الاختبار. الجواب «النظام لا يسمح بالتكرار» دون شرح الآلية ليس جوابًا.

حدود الاستخدام: موثقة ومعلنة ومنفصلة للترحيل

كل واجهة لها حدود، سواء وُثقت أم لا. المهم أن تكون معروفة قبل التشغيل. مثال على توثيق جيد من منصة أخرى: توثيق Microsoft لحدود حماية الخدمة في Dataverse يذكر الحدود الافتراضية بالأرقام، وأنها تُقاس في نافذة متحركة مدتها خمس دقائق، وأن تجاوزها في Web API يعيد 429 مع Retry-After بعدد الثواني، وينبه إلى أن الأرقام قابلة للتغيير. هذا مستوى الوضوح الذي تطلبه من أي مورد.

ما تسأل عنه تحديدًا:

قائمة اختبارات التقييم

نفّذ هذه الاختبارات على بيئة تجريبية يوفرها المورد، بحساب تقني مخصص، وسجّل النتيجة لكل منها. الأولوية «حرجة» تعني أن الفشل فيها يجب أن يُعالج قبل القبول.

اختبارات تقييم API الأرشفة: الأخطاء وإعادة المحاولة والتكرار والحدود
#الاختبارطريقة التنفيذالنتيجة المتوقعةالأولوية
1طلب بحقل إلزامي ناقصإرسال مستند فاتورة دون رقم الفاتورةرمز 4xx وجسم خطأ يحدد الحقلعالية
2نوع ملف غير مسموحإرسال ملف تنفيذيرفض برمز 4xx ورسالة واضحةعالية
3رمز دخول منتهٍاستعمال رمز انتهت صلاحيته401، ثم نجاح بعد التجديدعالية
4حساب بلا صلاحية على المجلدإرسال مستند إلى مجلد لا يملك الحساب صلاحيته403، ولا يُنشأ شيءحرجة
5إعادة إرسال المستند نفسهإرسال الطلب نفسه مرتين متتاليتينمستند واحد في الأرشيف وفق آلية منع التكرار المتفق عليهاحرجة
6إرسال متزامن للمستند نفسهطلبان بالمفتاح نفسه في اللحظة نفسهامستند واحدحرجة
7انقطاع بعد الإرسال وقبل الردقطع الاتصال من جهة العميل بعد إرسال الجسم، ثم إعادة الإرسالمستند واحد، والرد الثاني يدل على المستند الموجودحرجة
8تجاوز حد الاستخدامإرسال دفعة كبيرة بتوازٍ مرتفع429 مع مدة انتظار، ثم نجاح بعدها، دون فقد أي مستندعالية
9ملف كبيرإرسال ملف بحجم أكبر مستند متوقع لديكمنجاح، أو رفض واضح بحد موثقمتوسطة
10أسماء وحقول عربيةاسم ملف وحقول بالعربية مع أرقام هندية وعربيةتُحفظ دون تشوه ويُبحث بهاعالية
11تحديث حقل بعد الإنشاءتعديل حالة المستند من النظام المصدرتحديث الحقل دون إنشاء مستند جديد، وظهوره في سجل التغييرمتوسطة
12أثر العمليات في سجل التدقيقمراجعة السجل بعد الاختباراتكل عملية مسجلة باسم الحساب التقني ووقتهاحرجة

مثال: دفعة فواتير ليلية

مثال توضيحي — افتراضات معلنة

الافتراضات: شركة توزيع ترسل من نظامها المالي كل ليلة الفواتير المرحّلة في اليوم إلى الأرشيف، ومتوسطها ثلاثة آلاف فاتورة. الربط يستعمل رقم الفاتورة مع رمز الشركة مفتاحًا فريدًا. حد الاستخدام المتفق عليه لا يُعرف رقمه مسبقًا، والواجهة تعلن تجاوزه برمز 429 وترويسة Retry-After.

  1. يبدأ الربط بإرسال الفواتير بتوازٍ محدود. عند الفاتورة رقم 1,800 تقريبًا يصل 429 مع مدة انتظار؛ ينتظر الربط المدة ويستأنف.
  2. عند الفاتورة رقم 2,400 ينقطع الاتصال بعد إرسال الطلب ودون رد. يعيد الربط الإرسال بالمفتاح نفسه، فيرد الأرشيف بأن المستند موجود، فيسجله الربط ناجحًا ويكمل.
  3. ثلاث فواتير يُرفض إرسالها بخطأ 4xx لأن حقل المورد فارغ. لا تُعاد؛ تُسجَّل في قائمة استثناءات تصل صباحًا لمحاسب محدد ليصححها في المصدر.
  4. صباحًا يعرض تقرير الربط: 2,997 مرسلة، 3 استثناءات بأسبابها، 0 مكررة. ويطابق عدد الفواتير في الأرشيف لذلك اليوم عدد المرسلة.

لاحظ أن كل خطوة هنا تعتمد على سلوك في الواجهة يمكن اختباره مسبقًا بالاختبارات 1 و5 و7 و8. لو لم تُختبر، لكانت الخطوة الثانية نسخة مكررة لا يكتشفها أحد إلا عند المراجعة.

الحد الأدنى من أمان الواجهة

التقييم هنا ليس مراجعة أمنية كاملة، لكن أربعة أسئلة لا تُترك:

للمراجعة الأمنية الأوسع للمورد، راجع استبيان الأمن التقني الذي يُرسل إلى موردي أنظمة الأرشفة.

أسئلة تطلب إجاباتها مكتوبة في العرض الفني

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

واجهة وثيقة في هذا الإطار

يوفر وثيقة REST API للتوصيل مع الأنظمة المؤسسية التي لا يتكامل معها مباشرة، مثل Odoo وMicrosoft Dynamics وأنظمة الموارد البشرية وCRM، وكذلك ربط مزود التوقيع الإلكتروني المعتمد لدى الجهة بالتوقيع الذي يدعمه وثيقة ضمن مسار الاعتماد. ويتكامل مباشرة مع Microsoft 365 وSAP ERP وOracle والبريد الإلكتروني وActive Directory/LDAP. وكل عملية تُسجَّل في سجل تدقيق محمي بالتجزئة وقابل للتصدير. أما آلية منع التكرار وبنية الأخطاء وحدود الاستخدام لبيئتك فتُطلب مكتوبة في العرض الفني وتُختبر بالقائمة أعلاه؛ واطلب ذلك في العرض التوضيحي أو في تجربة إثبات المفهوم.

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

حوّل الاختبارات إلى شرط في العرض

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

أرسل متطلبات التكامل للحصول على عرض فني

حدّد النظام المطلوب ربطه، واتجاه البيانات، والحقول، وعدد المعاملات التقريبي؛ لنميّز ما هو تكامل منشور وما يُنفّذ عبر API ضمن نطاق.

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

الهاتف وواتساب: ‎+966 56 533 0501 — الأحد إلى الخميس 9 صباحاً حتى 6 مساءً.

و
فريق وثيقة التحريري

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