إصدارات API: إعداد انتقال متوافق

الخلاصة

تغيير الرقم وحده لا يحمي المستهلكين. يشمل التوافق الرسائل والسلوك الذي تعتمد عليه التطبيقات الفعلية.

منضدة لفحص المكونات الإلكترونية دون أشخاص
في هذا المقال

التقييم من منظور العميل

الجدول إطار للمراجعة وليس ضمانا عاما. قد يؤثر حقل إضافي في قارئ صارم، وقد تكسر قيمة تعداد جديدة معالجة تفترض حصر القيم. احصر التطبيقات والمكتبات والافتراضات.

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

تنظيم التعايش

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

التمييز بين الإهمال والإيقاف

يشير Deprecation إلى مورد مهمل، ويمكن لـ Sunset إعلان وقت توقع عدم توافره. لا تنقل هذه الترويسات التطبيقات تلقائيا. راجع المستهلكين الباقين والالتزامات والاستعادة قبل إيقاف إصدار.

المراجع الأساسية

تأثير الإصدار على المستخدم

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

  • جرد العملاء النشطين والاستخدام المُلاحَظ.
  • اختبار إصدارات العميل القديمة مقابل العقد الجديد.
  • نشر فترة تعايش وفحص الاستخدام قبل الإيقاف.

المصدر الأساسي: IETF RFC 9457 — Problem Details for HTTP APIs. المنهج المرتبط: اقرأ الدليل العملي.

مهام API غير المتزامنة

قبول الطلب لا يثبت اكتمال العمل.

  • الحساب والعملية ومعرّف قابل لإعادة الاستخدام
  • الحالة والوقت والفاصل والانتهاء
  • الناتج والخطأ والإلغاء والآثار الباقية
  • مهمة واحدة مأذونة ونتيجة متحققة بعد الانقطاع

حالة قبول قابلة للتكرار

مثال افتراضي: البيانات لا تصف عميلاً أو نتيجة مرصودة.

عرض بيانات الحالة
{
    "job_id": "J-42",
    "timeline": [
        {
            "elapsed_seconds": 0,
            "http": 202,
            "state": "pending"
        },
        {
            "elapsed_seconds": 5,
            "http": 200,
            "state": "running"
        },
        {
            "elapsed_seconds": 6,
            "http": 200,
            "state": "cancel_requested"
        },
        {
            "elapsed_seconds": 7,
            "http": 200,
            "state": "succeeded"
        }
    ]
}

القرار المتوقع

الرد 200 عند قراءة الحالة لا يعني اكتمال المعالجة. بعد طلب الإلغاء، يعتمد الاستنتاج على النتيجة المؤكدة فقط.

طلب الإلغاء وصل متأخرًا

سيناريو افتراضي: المهمة نفسها J-42، والزمن بالثواني منذ الإرسال. أسماء الحالات يحددها عقد هذا المثال ولا يفرضها HTTP.

الوقتالرد والحالةالاستنتاج المثبت
+0 sHTTP 202 · pendingقُبلت للمعالجة؛ لم تتأكد النتيجة النهائية.
+5 sHTTP 200 · runningنجحت قراءة الحالة؛ المهمة ما زالت تعمل.
+6 sHTTP 200 · cancel_requestedسُجل طلب التوقف؛ الإلغاء لم يتأكد بعد.
+7 sHTTP 200 · succeededاكتملت المعالجة قبل الإلغاء. اعرض النجاح المؤكد وتحقق من الآثار؛ لا تعلن إلغاء المهمة.

Microsoft — Asynchronous request-reply

هل 202 يثبت أن العمل سيكتمل؟

لا. يؤكد القبول للمعالجة وليس النتيجة النهائية. افحص حالة العملية.

المصدر الأساسي: MDN — 202 Accepted. المنهج المرتبط: اقرأ الدليل العملي.

تحديثات البرامج: التحقق من تغيير هوية الموقّع

تحديد ما إذا كان المنتج الموقّع يطابق المنتج وعملية البناء والإصدار المعتمدين.

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

حالة قبول قابلة للتكرار

مثال افتراضي: البيانات لا تصف عميلاً أو نتيجة مرصودة.

عرض بيانات الحالة
{
    "signature_valid": true,
    "digest_matches": true,
    "expected_signer": "approved-publisher",
    "observed_signer": "different-publisher",
    "expected": "hold_for_independent_confirmation"
}

القرار المتوقع

مثال افتراضي: البصمة مطابقة والتوقيع صحيح لكن الموقّع ليس المعتمد. يبقى التثبيت معلقاً حتى تأكيد التغيير عبر مصدر مستقل.

SLSA v1.2 — Verifying artifacts

المصدر الأساسي: SLSA v1.2 — Verifying artifacts. المنهج المرتبط: اقرأ الدليل العملي.

API: الإهمال والإيقاف

الملاحظات المرجعية المفصّلة متاحة باللغة الإنجليزية في هذه النسخة.

Plan retirement beyond the version number

A published version does not say when consumers need to migrate. Connect deprecation announcements, retirement dates and existing-client tests.

  • Distinguish Deprecation, Sunset and policy links.
  • Check that Sunset does not precede Deprecation when both dates are provided.
  • Measure remaining consumers and validate the replacement before cutover.

Compare deprecation and retirement announcements →

IETF · RFC 9745 · Deprecation · Standards Track · March 2025 · §2–5 · consulted 2026-10-23

IETF · RFC 8594 · Sunset · Informational · May 2019 · §3–5, §8 · consulted 2026-10-23