DEV Community

Cover image for كيفية محاكاة API بدون كود في Apidog
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

كيفية محاكاة API بدون كود في Apidog

فريق الواجهة الأمامية لديك عالق: الواجهة الخلفية لـ GET /users وGET /orders ليست جاهزة، لكنك تحتاج بيانات واقعية لبناء القوائم والصفحات ومعالجة الحالات الفارغة. بدل إنشاء ملفات JSON وهمية وتحديثها يدويًا مع كل تغيير في العقد، استخدم مخطط API نفسه كمصدر للبيانات التجريبية.

جرّب Apidog اليوم

إذا كانت لديك مواصفات API، يستطيع Apidog إنشاء محاكاة عاملة مباشرة من مخطط نقطة النهاية، دون كتابة كود أو إعداد قواعد لكل حقل. تُسمى هذه الميزة Smart Mock: تقرأ أسماء الحقول وأنواعها لتوليد بيانات منطقية، مثل اسم لحقل name وبريد إلكتروني لحقل email.

في هذا الدليل ستنفذ محاكاة لنقطتي نهاية لتجارة إلكترونية، وتتعرف إلى عنوان URL للمحاكاة، وأولوية الاستجابات، وكيفية تصحيح مخرجات Smart Mock عند الحاجة. لمقدمة أوسع، راجع ما هي محاكاة API وكيف تعمل، وراجع JSON Schema لفهم القيود التي تحترمها Smart Mock.

ما الذي تفعله Smart Mock؟

يوفر محرك المحاكاة في Apidog عدة طرق لإرجاع الاستجابات:

  1. Smart Mock: توليد بيانات تلقائيًا من مخطط API.
  2. Response Example: إرجاع مثال الاستجابة المحدد في المواصفات.
  3. Custom Mock: إرجاع استجابة مخصصة.
  4. Mock Expectations: إرجاع استجابات مختلفة حسب معلمات الطلب.
  5. Mock Scripts: إنشاء استجابات ترتبط قيمها بالطلب عبر النصوص.

واجهة خيارات المحاكاة في Apidog

Smart Mock هي الخيار الأسرع عندما تريد تشغيل الواجهة الأمامية قبل اكتمال الخلفية. يكفي أن تحتوي نقطة النهاية على مخطط استجابة؛ بعدها يملأ Apidog الحقول تلقائيًا بقيم مناسبة.

النتيجة العملية: عند تعديل المخطط، تتحدث المحاكاة معه لأنهما يعتمدان على المصدر نفسه.

قبل البدء: ما الذي تحتاجه؟

الشرط الأساسي هو وجود مخطط استجابة في نقطة النهاية.

  • إذا كنت تصمم API داخل Apidog، أضف مخطط الاستجابة ضمن تعريف الاستجابة.
  • إذا كنت تستورد ملف OpenAPI، فعادةً تكون مخططات الاستجابة موجودة مسبقًا.
  • بدون مخطط استجابة، لن تمتلك Smart Mock معلومات كافية لتوليد بيانات مفيدة.

إذا كنت ستستخدم Local Mock، ستحتاج إلى عميل سطح المكتب. يمكنك تنزيل Apidog؛ يعمل Local Mock على جهازك ولا يتوفر في Apidog Web.

تطبيق عملي: محاكاة GET /users وGET /orders

الخطوة 1: عرّف نقاط النهاية ومخططات الاستجابة

أنشئ نقطة النهاية GET /users وأضف استجابة مثل الآتية:

{
  "id": 1024,
  "name": "Amara Osei",
  "email": "amara.osei@example.com",
  "phone": "+1-415-555-0148",
  "createdAt": "2026-03-11T09:24:00Z",
  "isActive": true
}
Enter fullscreen mode Exit fullscreen mode

ثم أنشئ GET /orders مع استجابة قائمة طلبات:

[
  {
    "orderId": "ORD-58210",
    "userId": 1024,
    "total": 84.5,
    "currency": "USD",
    "status": "shipped",
    "createdAt": "2026-05-02T14:03:00Z"
  }
]
Enter fullscreen mode Exit fullscreen mode

تأكد من تعريف نوع كل خاصية في المخطط. تعتمد Smart Mock على النوع واسم الخاصية عند اختيار القيمة المولدة.

الخطوة 2: انسخ عنوان URL للمحاكاة

يحصل كل Endpoint على عنوان محاكاة تلقائيًا:

  • في وضع DESIGN: افتح نقطة النهاية ثم علامة تبويب API.
  • في وضع DEBUG: افتح علامة تبويب Mock.

انقر على Click to copy لنسخ الرابط. تذكر أن النسخ ينسخ عنوان URL فقط؛ أضف طريقة الطلب وهيئته بنفسك إذا لم تكن نقطة النهاية GET.

في وضع المسار، يكون عنوان Local Mock بالشكل التالي:

http://127.0.0.1:4523/m1/{projectID}-{versionNo}-{serverNo}/users
Enter fullscreen mode Exit fullscreen mode

ويتوفر أيضًا وضع المعرف، الذي يستهدف Endpoint محددًا:

http://127.0.0.1:4523/m2/{projectID}-{versionNo}-{serverNo}/{endpointId}
Enter fullscreen mode Exit fullscreen mode

يبدأ Local Mock تلقائيًا عند فتح عميل Apidog.

الخطوة 3: استدعِ المحاكاة

استدعِ نقطة نهاية المستخدمين باستخدام curl:

curl http://127.0.0.1:4523/m1/1234567-0-0/users
Enter fullscreen mode Exit fullscreen mode

ستتلقى استجابة مشابهة لهذه:

{
  "id": 3187,
  "name": "Diego Marchetti",
  "email": "diego.marchetti@example.net",
  "phone": "+1-628-555-0113",
  "createdAt": "2026-01-27T18:41:22Z",
  "isActive": true
}
Enter fullscreen mode Exit fullscreen mode

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

استدعِ نقطة نهاية الطلبات بالطريقة نفسها:

curl http://127.0.0.1:4523/m1/1234567-0-0/orders
Enter fullscreen mode Exit fullscreen mode

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

كيف تولد Smart Mock القيم؟

تعتمد Smart Mock على ترتيب أولوية من ثلاث طبقات:

  1. Mock Field
  2. مطابقة اسم الخاصية
  3. قيود JSON Schema

1. Mock Field

إذا عيّنت قيمة أو تعبيرًا مخصصًا في Mock Field، تكون له الأولوية الأعلى.

استخدمه في حالتين:

  • قيمة ثابتة عندما يجب أن تكون القيمة نفسها دائمًا، مثل:
currency = USD
Enter fullscreen mode Exit fullscreen mode
  • تعبير Faker عندما تريد قيماً متغيرة لكن مضبوطة، مثل حالة طلب تختار من:
shipped
pending
delivered
Enter fullscreen mode Exit fullscreen mode

2. مطابقة اسم الخاصية

إذا لم تحدد Mock Field، تحاول Smart Mock مطابقة اسم الحقل مع قواعدها المدمجة.

أمثلة شائعة:

اسم الخاصية نوع البيانات المتوقع
email بريد إلكتروني
name اسم
phone رقم هاتف
createdAt تاريخ ووقت
address عنوان

يمكنك إضافة قواعد مطابقة مخصصة باستخدام أنماط wildcard أو التعبيرات النمطية.

3. قيود JSON Schema

إذا لم تجد Smart Mock قاعدة لاسم الحقل، فإنها تستخدم نوع البيانات وقيود المخطط.

أولوية توليد البيانات في Smart Mock

لتحسين دقة البيانات، أضف قيودًا إلى المخطط:

{
  "type": "string",
  "enum": ["pending", "shipped", "delivered"]
}
Enter fullscreen mode Exit fullscreen mode

أو لنطاق إجمالي الطلب:

{
  "type": "number",
  "minimum": 1,
  "maximum": 10000
}
Enter fullscreen mode Exit fullscreen mode

وتحترم Smart Mock أيضًا قيودًا مثل:

  • minLength وmaxLength
  • minimum وmaximum
  • enum
  • pattern
  • minItems وmaxItems

إذا ضبطت minItems إلى 3، فستحتوي المصفوفة على ثلاثة عناصر على الأقل.

عندما لا تكون بيانات Smart Mock مناسبة

قد لا يطابق حقل مثل sku قاعدة مدمجة، أو قد ينتج الحقل total رقمًا لا يناسب سيناريو متجرك. عالج ذلك بهذا الترتيب.

1. حسّن المخطط

ابدأ بإضافة قيود إلى JSON Schema.

مثال لحقل SKU:

{
  "type": "string",
  "pattern": "^SKU-[0-9]{6}$"
}
Enter fullscreen mode Exit fullscreen mode

مثال لحالة الطلب:

{
  "type": "string",
  "enum": ["pending", "shipped", "delivered"]
}
Enter fullscreen mode Exit fullscreen mode

2. استخدم Mock Field

استخدم قيمة ثابتة للحقول التي لا يجب أن تتغير:

currency = USD
Enter fullscreen mode Exit fullscreen mode

واستخدم تعبير Faker عندما تريد تنوعًا في البيانات. تعتمد طبقة Faker في Apidog على أفكار مشابهة لمكتبة Mock.js. راجع دليل استخدام Faker في Apidog لصياغة التعبيرات.

3. أضف قاعدة مطابقة عامة للحقل

إذا كان لديك حقل مثل sku في عدة Endpoints، لا تضبطه يدويًا في كل مرة.

انتقل إلى:

Settings
→ General Settings
→ Feature Settings
→ Mock Settings
Enter fullscreen mode Exit fullscreen mode

ثم:

  1. انقر New.
  2. أضف شرطًا يطابق اسم الحقل، مثل sku.
  3. عيّن تعبير المحاكاة المطلوب.
  4. احفظ القاعدة.

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

أولوية الاستجابات: أي استجابة ستُرجع؟

عندما توجد عدة مصادر محتملة للاستجابة، يتحكم إعداد Default mock method في الترتيب. ستجده ضمن:

Project Settings
→ Mock Settings
Enter fullscreen mode Exit fullscreen mode

توجد طريقتان:

  • Smart Mock First

    1. Mock Expectation
    2. Smart Mock
  • Response example first

    1. Mock Expectation
    2. Response Example
    3. Smart Mock

القاعدة الأهم: Mock Expectations لها الأولوية دائمًا إذا كانت شروطها مطابقة.

على سبيل المثال، يمكنك إعداد Mock Expectation يعيد 404 عندما تكون قيمة userId هي 9999. سيُرجع Apidog هذه الاستجابة الشرطية بغض النظر عن إعداد طريقة المحاكاة الافتراضية.

للتفاصيل، راجع محاكاة استجابات API الشرطية في Apidog.

Local Mock وCloud Mock وRunner Mock

تحدد Smart Mock كيف تُنشأ الاستجابة، بينما تحدد خيارات الاستضافة أين تعمل المحاكاة.

Local Mock

  • تعمل على جهازك عبر عميل Apidog.
  • تبدأ تلقائيًا عند فتح العميل.
  • تستمع على 127.0.0.1:4523.
  • لا تتوفر في Apidog Web.
  • مناسبة لتطوير الواجهة الأمامية محليًا.

Cloud Mock

  • مستضافة على خوادم Apidog.
  • يمكن الوصول إليها على مدار الساعة.
  • متوقفة افتراضيًا، لذا فعّلها من إدارة البيئة عند الحاجة.
  • تستخدم عناوين مثل:
https://mock.apidog.com
Enter fullscreen mode Exit fullscreen mode
  • مخصصة للاختبار، وليست لحركة مرور الإنتاج.

Runner Mock

  • مستضافة ذاتيًا على بنية فريقك.
  • مناسبة للبيئات الداخلية أو الشبكات الخاصة.
  • تتيح مشاركة المحاكاة بين أعضاء الفريق.

اختر Local Mock للعمل الفردي، وCloud Mock عندما يحتاج أعضاء الفريق أو بيئة معاينة إلى الوصول، وRunner Mock عندما يجب أن تبقى المحاكاة داخل بنيتك التحتية.

راجع مقارنة أدوات محاكاة API عبر الإنترنت ودليل Apidog Cloud Mock لمزيد من التفاصيل.

مشاكل توجيه شائعة

يجب أن يبدأ المسار بـ /

استخدم مسارًا مثل:

/orders
Enter fullscreen mode Exit fullscreen mode

ولا تعتمد على عنوان URL كامل عند توقع استخدام بيئة المحاكاة. المسارات التي لا تبدأ بـ / لا تُوجّه بالطريقة نفسها، ويعمل المسار دون الشرطة المائلة الأولى فقط في وضع المعرف.

Endpoints لها الطريقة والمسار نفسيهما

إذا كانت لديك واجهتا API تشتركان في الطريقة والمسار، لا يستطيع وضع المسار التمييز بينهما وحده.

أضف معامل الاستعلام التالي لتحديد Endpoint المقصود:

?apidogApiId={endpointId}
Enter fullscreen mode Exit fullscreen mode

القيم تتغير عند تحديث الطلب

تعيد Smart Mock توليد القيم الديناميكية عند إرسال طلب جديد. إذا ظهرت لك الاستجابة نفسها باستمرار، تحقق مما إذا كنت تعرض استجابة مخبأة بدلًا من تنفيذ طلب جديد.

أتمتة تدفق العمل باستخدام Apidog CLI

لا يستضيف Apidog CLI خادم محاكاة ولا يبدأه من الطرفية. دور CLI هو المحافظة على دقة المواصفات التي تعتمد عليها المحاكاة مع تطور المشروع.

بما أن Smart Mock تعتمد على مخطط نقطة النهاية، فإن جودة المحاكاة تعتمد مباشرة على جودة العقد. يمكن لـ Apidog CLI وعوامل البرمجة المدعومة بالذكاء الاصطناعي تحديث Endpoints والمخططات في المشروع، ما يحافظ على توافق بيانات المحاكاة مع العقد.

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

apidog run -t <معرّف_السيناريو> -e <معرّف_البيئة> -r html,cli
Enter fullscreen mode Exit fullscreen mode

ثبّت CLI باستخدام:

npm install -g apidog-cli
Enter fullscreen mode Exit fullscreen mode

يتطلب ذلك Node.js v16 أو أحدث. ثم سجّل الدخول باستخدام رمزك:

apidog login --with-token <الرمز_الخاص_بك>
Enter fullscreen mode Exit fullscreen mode

راجع دليل تشغيل Apidog في مسار CI/CD لربط الاختبارات بخط الأنابيب.

الأسئلة الشائعة

هل أحتاج إلى كتابة كود لاستخدام Smart Mock؟

لا. تحتاج فقط إلى مخطط استجابة محدد. استخدم Mock Field أو Faker أو Mock Scripts فقط عندما تحتاج إلى تخصيص السلوك.

راجع نظرة عامة على محاكاة API للمفاهيم الأساسية.

لماذا لا يعيد رابط المحاكاة أي بيانات مفيدة؟

تحقق من الآتي:

  1. هل تحتوي نقطة النهاية على تعريف استجابة؟
  2. هل يحتوي تعريف الاستجابة على مخطط؟
  3. هل يبدأ المسار بـ /؟
  4. هل عميل Apidog مفتوح عند استخدام Local Mock؟

كيف أعيد قيمة ثابتة بدل قيمة مولدة؟

استخدم Mock Field للحقل المطلوب:

  • استخدم قيمة ثابتة إذا أردت القيمة نفسها في كل طلب.
  • استخدم تعبير Faker إذا أردت قيماً متغيرة ضمن قواعد محددة.

هل يستطيع زملائي الوصول إلى Local Mock على جهازي؟

فقط عبر شبكتك المحلية وأثناء تشغيل عميل Apidog. للوصول المستمر، فعّل Cloud Mock.

ماذا يحدث إذا كان لدي Response Example وSmart Mock معًا؟

يعتمد ذلك على إعداد Default mock method:

  • مع Smart Mock First: تستخدم Smart Mock بعد التحقق من Mock Expectations.
  • مع Response example first: يستخدم Response Example قبل Smart Mock.
  • في الحالتين: Mock Expectations المطابقة لها الأولوية العليا.

الخلاصة

تحول Smart Mock مخطط API إلى محاكاة قابلة للاستخدام دون كود أو إعدادات متكررة. لتعطيل أقل للواجهة الأمامية:

  1. عرّف مخطط استجابة واضحًا.
  2. انسخ عنوان URL للمحاكاة.
  3. استدعِ Endpoint من تطبيقك.
  4. حسّن المخطط عند الحاجة.
  5. استخدم Mock Field أو قواعد مطابقة الأسماء للحالات الخاصة.
  6. استخدم Mock Expectations للاستجابات الشرطية.

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

Top comments (0)