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

تعمل أداة محاكاة واجهة برمجة تطبيقات بلا واجهة رسومية من سطر الأوامر. قارن بين Prism و WireMock و Mockoon CLI و Apidog للمحاكاة في CI استنادًا إلى مواصفاتك.

INEZA Felin-Michel

INEZA Felin-Michel

29 يونيو 2026

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

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

تقوم أداة محاكاة واجهة برمجة التطبيقات (API mock tool) غير الرسومية (headless) بإنشاء نسخة وهمية عاملة من واجهة برمجة التطبيقات الخاصة بك من مواصفات أو تكوين، ثم تشغلها من سطر الأوامر دون الحاجة إلى نافذة للنقر. هذا بالضبط ما تحتاجه داخل مسار CI، أو حاوية Docker، أو سكربت تطوير الواجهة الأمامية. يشرح هذا الدليل ما يعنيه مصطلح "غير رسومي" (headless) للمحاكاة، ويعرض الخيارات غير الرسومية الحقيقية (Prism، WireMock، Mockoon CLI)، ويغطي مكان Apidog. إذا كنت تريد المفهوم أولاً، فابدأ بما هي واجهة برمجة تطبيقات وهمية.

زر

ماذا يعني "غير رسومي" لواجهة برمجة تطبيقات وهمية

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

هذا مهم لأن الأماكن التي تحتاج فيها إلى محاكاة غالبًا ما تكون أماكن لا تحتوي على شاشة:

تُعد أداة المحاكاة ذات الواجهة الرسومية (GUI) مناسبة لتصميم الاستجابات على جهاز الكمبيوتر المحمول الخاص بك. ولكن في اللحظة التي تحتاج فيها إلى هذه المحاكاة في مسار عمل، فإنك تحتاج إلى وضع غير رسومي (headless): علامة CLI، أو صورة Docker، أو عنوان URL مستضاف يمكن لأي مهمة الوصول إليه.

محاكاة تعتمد على المواصفات مقابل محاكاة تعتمد على التكوين

تنقسم أدوات المحاكاة غير الرسومية إلى معسكرين، ويشكل الفرق بينهما سير عملك بالكامل.

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

الأدوات المعتمدة على التكوين تخزن الاستجابات بتنسيقها الخاص (ملفات JSON، قوالب مسجلة، قواعد مكتوبة يدويًا). إنها مرنة وجيدة للحالات الاستثنائية التي لا تغطيها المواصفات، ولكنك تحتفظ بهذا التكوين يدويًا، ويمكن أن يبتعد عن واجهة برمجة التطبيقات الحقيقية.

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

خيارات المحاكاة غير الرسومية، بصراحة

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

Prism (Stoplight)

يحوّل Prism ملف OpenAPI 2/3 أو Postman Collection إلى خادم محاكاة من أمر واحد:

prism mock openapi.yaml

يستمع على `http://127.0.0.1:4010` افتراضيًا. بشكل افتراضي، يقوم بإرجاع `examples` ثابتة من مواصفاتك. أضف `-d` (ديناميكي) ويقوم Prism بإنشاء بيانات عشوائية ولكنها صالحة من المخطط، مع دعم Faker عبر ملحق `x-faker`. إنه مفتوح المصدر، خفيف الوزن، ويعتمد على المواصفات بشكل حقيقي. إذا كان عقدك موجودًا في ملف OpenAPI واحد وتريد محاكاة CLI خالصة، فإن Prism هو خيار قوي.

WireMock

WireMock هو خادم محاكاة HTTP ناضج قائم على Java. يمكنك تشغيل ملف jar المستقل:

java -jar wiremock-standalone-3.x.x.jar --port 9099

نموذجه الأساسي هو التقطيع (stubbing): تقوم بتعريف قواعد مطابقة الطلبات والاستجابات التي ترجعها، عبر واجهة برمجة تطبيقات JSON أو ملفات JSON. كما يقوم بتسجيل وإعادة تشغيل حركة المرور من خدمة حقيقية، وهو أمر مفيد عندما لا يكون لديك مواصفات ولكن لديك واجهة خلفية عاملة لالتقاطها. يتألق WireMock في مطابقة الطلبات المعقدة، والسيناريوهات ذات الحالة، ومجموعات JVM الثقيلة.

Mockoon CLI

Mockoon هو تطبيق سطح مكتب مع أداة CLI مصاحبة للاستخدام غير الرسومي. يقوم CLI بتشغيل بيئات المحاكاة التي تبنيها، على الخوادم، في CI، أو في أي مكان لا يمكنك فيه فتح تطبيق سطح المكتب:

mockoon-cli start --data ./environment.json --port 3000

يأتي مع صورة Docker رسمية وأمر `dockerize` يقوم بإنشاء Dockerfile لصورة محاكاة قائمة بذاتها. يعتمد Mockoon على التكوين (تبني البيئات في الواجهة الرسومية، ثم تشغلها بشكل غير رسومي)، مع دعم القوالب وقواعد الاستجابة ووضع الوكيل. مناسب تمامًا إذا كنت تحب التصميم المرئي والنشر غير الرسومي.

خادم المحاكاة Apidog

Apidog هي منصة API متكاملة، وخادم المحاكاة الخاص بها يعتمد على المخطط افتراضيًا. عندما تحدد أو تستورد واجهة برمجة تطبيقات، يقوم Apidog بإنشاء محاكاة بدون إعدادات إضافية. يقرأ Smart Mock الخاص به أسماء الحقول وأنواعها لإنتاج بيانات واقعية: يتعرف على أشياء مثل `email`، `avatar`، `username`، `phone`، `date`، و`IP`، ويملؤها بقيم معقولة بدلاً من عناصر نائبة `string`. للتحكم الكامل، يمكنك استخدام تعابير Faker.js مثل `{{$person.fullName}}` أو `{{$number.int(min=1,max=100)}}`، بالإضافة إلى قواعد محاكاة مخصصة لظروف طلبات محددة.

للاستخدام غير الرسومي، يوفر Apidog عنوان URL لمحاكاة سحابية (Cloud Mock URL) (`https://mock.apidog.com/...`) يمكن لأي مهمة CI أو زميل في الفريق الوصول إليه دون تشغيل أي شيء محليًا. تعمل المحاكاة المحلية أيضًا على `127.0.0.1`، ويمكنك ربطها بعنوان IP لشبكة الإنترانت الخاصة بك بحيث يمكن للآلات الأخرى الوصول إليها. نظرًا لأن المحاكاة مستمدة من نفس المشروع الذي يحتوي على تصميم واجهة برمجة التطبيقات والوثائق والاختبارات الخاصة بك، فإنها تظل متوافقة مع العقد بدلاً من الانجراف إلى ملف تكوين منفصل.

مقارنة

الأداة مصدر الحقيقة تشغيل غير رسومي بيانات واقعية الأفضل لـ
Prism ملف OpenAPI / Postman prism mock spec.yaml الوضع الديناميكي (`-d`) + `x-faker` محاكاة CLI نقية تعتمد على المواصفات أولاً
WireMock قواعد / تسجيلات Stub ملف jar مستقل قوالب الاستجابة المطابقة المعقدة، مكدسات JVM، التسجيل/الإعادة
Mockoon CLI بيئات مبنية بالواجهة الرسومية mockoon-cli start + Docker مساعدات القوالب التصميم المرئي، النشر غير الرسومي
Apidog مخطط API في المشروع عنوان URL لمحاكاة سحابية + خادم محلي Smart Mock + Faker.js محاكاة تعتمد على المخطط مرتبطة بالتصميم والوثائق والاختبارات

لا يوجد فائز واحد. Prism هو الأفضل إذا كانت واجهة برمجة التطبيقات بأكملها هي ملف OpenAPI واحد. يتفوق WireMock في عمق مطابقة الطلبات. Mockoon رائع إذا كنت تفضل البناء بصريًا. يناسب Apidog الفرق التي تريد المحاكاة، والعقد، والوثائق، والاختبارات في مكان واحد حتى لا تتباعد. لمجال أوسع، راجع مجموعتنا من أفضل أدوات محاكاة واجهة برمجة التطبيقات.

تشغيل محاكاة غير رسومية في CI

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

تبدو محاكاة CLI المعتمدة على المواصفات أولاً كما يلي في خطوة مسار العمل:

# تشغيل المحاكاة في الخلفية
prism mock ./openapi.yaml &
MOCK_PID=$!

# تشغيل اختبارات الواجهة الأمامية أو واجهة برمجة التطبيقات الخاصة بك مقابل http://127.0.0.1:4010
npm test

# تنظيف
kill $MOCK_PID

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

الخطوة الطبيعية التالية هي الاختبار مقابل تلك المحاكاة من سطر الأوامر. أداة CLI الخاصة بـ Apidog (`apidog-cli`) هي نفسها غير رسومية: `apidog run` تنفذ سيناريوهات الاختبار الخاصة بك في CI، وتدعم التشغيل المعتمد على البيانات من CSV أو JSON، وتكتب تقارير CLI أو HTML أو JSON. يعرض الدليل التفصيلي في اختبار واجهة برمجة تطبيقات REST من سطر الأوامر الحلقة الكاملة، ويغطي الدليل الكامل لـ CLI العلامات. إذا كنت قد استخدمت Newman، فإن مقارنة Apidog CLI مقابل Postman CLI توضح المفاهيم.

المحاكاة وعوامل الترميز بالذكاء الاصطناعي

إذا كنت تكتب التعليمات البرمجية باستخدام Cursor أو Claude أو VS Code، فإن وكيلك يستفيد من معرفة عقد واجهة برمجة التطبيقات الكامنة وراء المحاكاة. يسمح خادم Apidog MCP لوكيل الذكاء الاصطناعي بقراءة مواصفات واجهة برمجة التطبيقات الخاصة بك مباشرةً، بحيث يمكنه بناء كود العميل الذي يطابق المخطط الذي تقدمه المحاكاة بالفعل. هذا يحافظ على توافق مخرجات الوكيل واستجابات المحاكاة الخاصة بك مع نفس العقد.

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

هل المحاكاة غير الرسومية هي نفسها خادم المحاكاة؟

نعم، مع تفصيل واحد. خادم المحاكاة هو أي عملية تستجيب للطلبات باستجابات وهمية. يحدد مصطلح "غير رسومي" (headless) أنه يعمل بدون واجهة رسومية، ويتم تشغيله بأمر أو استضافته على عنوان URL، لذلك فهو يعمل في CI و Docker والسكربتات. يمكن لكل أداة هنا أن تعمل بشكل غير رسومي.

هل يمكنني إنشاء محاكاة غير رسومية من مواصفات OpenAPI الخاصة بي؟

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

كيف تُرجع المحاكاة غير الرسومية بيانات واقعية بدلاً من العناصر النائبة؟

لكل أداة محرك بيانات. يقوم الوضع الديناميكي لـ Prism و`x-faker` بإنشاء قيم من المخطط. يطابق Smart Mock في Apidog أسماء الحقول مثل `email` أو `phone` بقيم معقولة، ويمكنك استخدام تعابير Faker.js للتحكم الدقيق. بدون أحد هذه، تميل المحاكاة إلى إرجاع سلاسل فارغة وأصفار.

هل أحتاج إلى تشغيل خادم، أم يمكنني استخدام عنوان URL لمحاكاة مستضافة؟

كلاهما يعمل. يقوم WireMock و Prism و Mockoon CLI بتشغيل عملية تديرها أنت. يضيف Apidog عنوان URL لمحاكاة سحابية مستضافة يمكن لأي مهمة CI أو زميل في الفريق استدعاؤه بدون إعداد محلي، مما يزيل جزءًا متحركًا واحدًا من مسار العمل.

الخلاصة

تُحدث أداة محاكاة واجهة برمجة التطبيقات غير الرسومية الفرق بين محاكاة تساعدك على التجول محليًا ومحاكاة تعمل بالفعل في مسار عملك. يقوم Prism و WireMock و Mockoon CLI بذلك جيدًا لكل منها أسلوب عملها. إذا كنت تريد أن تظل المحاكاة مرتبطة بتصميم واجهة برمجة التطبيقات والوثائق والاختبارات الخاصة بك بدلاً من العيش في تكوين خاص بها ينحرف، فإن Apidog يحتفظ بكل ذلك في مشروع واحد، مع محاكاة تعتمد على المخطط تعمل محليًا أو من عنوان URL مستضاف. قم بتنزيل Apidog لتشغيل محاكاة من مواصفاتك وتوجيه CI الخاص بك إليها.

ممارسة تصميم API في Apidog

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