تحتاج إلى واجهة برمجة تطبيقات وهمية الآن: ليس خدمة مستضافة، ولا Docker Compose، ولا واجهة رسومية. فقط أمر يقرأ ملفًا ويبدأ بإرجاع الاستجابات على localhost. هذا هو دور خادم المحاكاة الخفيف: وجّهه إلى مواصفات OpenAPI أو ملف بيانات صغير، شغّل أمرًا واحدًا، ثم اربط به الواجهة الأمامية أو اختباراتك إلى أن يصبح الخادم الخلفي الحقيقي جاهزًا.
يعرض هذا الدليل ست أدوات CLI مرتبة تقريبًا من الأقل احتكاكًا إلى الأكثر تكاملًا. ابدأ بأدوات npx عندما تريد استجابة سريعة، وانتقل إلى أدوات JVM عندما تحتاج إلى مطابقة طلبات متقدمة، واختر Apidog CLI عندما تريد إدارة التصميم والمحاكاة والاختبارات ضمن مشروع واحد. لمقارنة خيارات أوسع تشمل الواجهات الرسومية والخدمات المستضافة، راجع أفضل أدوات محاكاة API.
ما الذي يجعل أداة محاكاة CLI خفيفة الوزن؟
لا تعني الخفة عدد ميزات أقل فقط؛ بل تعني الوصول إلى أول استجابة بأقل بصمة وأقل إعداد. قيّم الأداة وفق هذه النقاط:
-
حجم التثبيت وبيئة التشغيل: أداة Node تعمل عبر
npxتحتاج عادةً إلى Node.js فقط. أما خادم JVM مستقل فيحتاج إلى Java وملف JAR أكبر. - زمن البدء: يجب أن يعمل الخادم قبل أن تغادر المحرر. غالبًا تبدأ أدوات Node خلال أقل من ثانية.
- الانتقال من ملف إلى استجابة: الأفضل أن تحتاج إلى ملف واحد وأمر واحد فقط.
- العمل من الطرفية أولًا: لا حسابات ولا لوحات تحكم. يجب أن تعمل الأداة داخل سكربت Shell أو مهمة CI بسهولة.
الأدوات الأولى هنا—Prism وMockoon CLI وjson-server—تعمل مباشرة باستخدام npx من دون تثبيت عالمي.
Prism (Stoplight)
استخدم Prism عندما تملك مواصفات OpenAPI وتريد خادمًا وهميًا يلتزم بها. يقرأ paths وexamples والمخططات من ملف OpenAPI ويحوّلها إلى نقاط نهاية قابلة للاستهلاك.
التشغيل السريع
npx @stoplight/prism-cli mock ./openapi.yaml
سيبدأ Prism افتراضيًا على:
http://127.0.0.1:4010
ما الذي تحصل عليه؟
- نقطة نهاية لكل عملية معرفة في المواصفات.
- استجابة
exampleعندما تكون قد عرّفت مثالًا. - بيانات مولّدة ومتوافقة مع المخطط عندما لا يوجد مثال.
- تحقق من الطلبات الواردة مقابل المواصفات؛ الطلب غير المطابق يمكن أن يرجع
422.
للتثبيت العام:
npm install -g @stoplight/prism-cli
prism mock ./openapi.yaml
الأفضل لـ: فرق التصميم أولًا (spec-first) التي تريد إبقاء المحاكاة متوافقة مع عقد API. Prism مرخص تحت Apache-2.0 ويدعم OpenAPI 3.1 و3.0 و2.0 ومجموعات Postman.
حدود مهمة: Prism عديم الحالة. إذا أرسلت POST لإنشاء مورد، فلن يحتفظ به تلقائيًا لطلب GET لاحق. لذلك حسّن الأمثلة والمخططات في مواصفاتك للحصول على استجابات مفيدة. يناسب هذا النهج سير عمل أدوات محاكاة REST API التي تركز على دقة العقد.
Mockoon CLI
يشغّل Mockoon CLI خادمًا وهميًا من ملف بيئة Mockoon أو ملف OpenAPI بصيغة JSON أو YAML. يمكنك تصميم المسارات بصريًا في تطبيق Mockoon المكتبي، ثم تشغيل البيئة نفسها بدون واجهة رسومية محليًا أو في CI.
التشغيل السريع
npx @mockoon/cli start --data ./mockoon-env.json --port 3000
يمكن أن يشير --data إلى:
- ملف بيئة Mockoon مُصدّر.
- ملف OpenAPI بصيغة JSON.
- ملف OpenAPI بصيغة YAML.
للتثبيت العام:
npm install -g @mockoon/cli
mockoon-cli start --data ./mockoon-env.json --port 3000
إذا كان ملف البيئة من إصدار أقدم، يرحّله CLI في الذاكرة من دون تعديل الملف الأصلي.
الأفضل لـ: فريق يصمم المحاكاة في GUI لكنه يحتاج تشغيلها من الطرفية داخل CI أو على خادم. الأداة مرخصة تحت MIT ولديها صورة Docker رسمية.
حدود مهمة: بناء المسارات المعقدة أسهل في تطبيق سطح المكتب. إذا كنت تريد كتابة كل شيء يدويًا في ملف واحد، فقد يكون Prism أو json-server أبسط.
json-server
استخدم json-server عندما لا تملك مواصفات OpenAPI بعد وتريد خلفية REST عملية فورًا. اكتب بياناتك في JSON، وسيولّد الأداة عمليات CRUD حولها.
أنشئ قاعدة بيانات وهمية
echo '{ "posts": [{ "id": 1, "title": "hello" }] }' > db.json
npx json-server db.json
ثم جرّب نقطة النهاية:
curl http://localhost:3000/posts
أضف سجلًا جديدًا
curl -X POST http://localhost:3000/posts \
-H "Content-Type: application/json" \
-d '{ "title": "منشور جديد" }'
يوفر json-server تلقائيًا:
GETPOSTPUTPATCHDELETE
ويكتب بيانات POST وعمليات التعديل مرة أخرى إلى db.json، لذلك تحصل على سلوك حافظ للحالة. كما يدعم التصفية والفرز وتقسيم الصفحات عبر معاملات الاستعلام. تراقب سلسلة 1.x الملف وتعيد التحميل عند تغيّره افتراضيًا.
للتثبيت العام:
npm install -g json-server
الأفضل لـ: مطوري الواجهة الأمامية الذين يحتاجون إلى API REST عاملة خلال دقيقة، قبل وجود الخلفية الفعلية. الأداة مرخصة تحت MIT، وهي من خيارات خوادم المحاكاة خفيفة الوزن لواجهة RESTful API التي لا تتطلب مواصفات.
حدود مهمة: يفترض json-server نمط REST القائم على الموارد. لا يناسب المسارات المخصصة جدًا أو المطابقة الدقيقة للرؤوس والأجسام أو اختبار التزام العقد.
MockServer
اختر MockServer عندما تحتاج إلى تحديد الطلب المتوقع بدقة: الطريقة، والمسار، والرؤوس، ومعاملات الاستعلام، والجسم. يمكنك أيضًا إرجاع تأخيرات أو إخفاقات لاختبار المهلات ومعالجة الأخطاء.
تشغيل الخادم
java -jar mockserver-netty-5.15.0-no-dependencies.jar -p 1080
سيعمل الخادم على المنفذ 1080.
بعد ذلك، أرسل توقعاتك إلى REST API الخاصة بـ MockServer أو أنشئها برمجيًا. لمشاريع Node.js، استخدم الغلاف الرسمي:
npm install mockserver-node
const mockserver = require('mockserver-node');
mockserver.start_mockserver({
serverPort: 1080
});
الأفضل لـ: اختبارات التكامل التي يجب أن تتحكم بدقة في شكل الطلب والاستجابة، بما في ذلك التأخيرات وحالات الفشل. MockServer مرخص تحت Apache-2.0 ويدعم HTTP وHTTPS والمزيد على منفذ واحد.
حدود مهمة: يحتاج إلى JVM، ولذلك تكون بصمته وزمن بدئه أكبر من أدوات Node. كما أن كتابة التوقعات أكثر تفصيلًا من تمرير ملف OpenAPI. إذا احتجت مقارنة البدائل، راجع بدائل MockServer.
WireMock (مستقل)
WireMock خادم محاكاة راسخ في بيئات Java وJVM. يشغّل ملف JAR المستقل نفس المحرك الذي يمكن تضمينه في اختبارات JUnit، لذلك يمكنك مشاركة التعريفات بين التطوير المحلي والاختبارات.
تشغيل الخادم
java -jar wiremock-standalone.jar --port 8080
سيعمل WireMock على المنفذ 8080.
ضع ملفات التعيين في مجلد mappings/، أو أنشئها عبر JSON API الخاصة به. يستطيع WireMock أيضًا تسجيل حركة مرور API حقيقية وإعادة تشغيلها كتعيينات، وهو مفيد عند محاكاة API خارجية لا تتحكم بها.
تتوفر كذلك صورة Docker رسمية:
wiremock/wiremock
الأفضل لـ: فرق JVM التي تريد استخدام محرك محاكاة واحد في التطوير والاختبارات، وتحتاج إلى التسجيل وإعادة التشغيل. WireMock مرخص تحت Apache-2.0.
حدود مهمة: يحتاج إلى Java ويبدأ ببطء أكبر من بدائل Node. ملفات تعيين JSON قوية، لكنها تتطلب منحنى تعلم أعلى من ملف بيانات بسيط. إذا كنت تعمل في JavaScript، فراجع بدائل Mock Service Worker (MSW) لفهم موقع WireMock مقارنة بالمحاكاة داخل المتصفح.
Apidog CLI
تغطي الأدوات السابقة جزءًا محددًا من سير عمل المحاكاة. أما Apidog فيجمع تصميم API والمحاكاة والاختبارات والوثائق ضمن مشروع واحد، بينما يدير Apidog CLI المشروع من الطرفية.
Apidog ليس مفتوح المصدر؛ إنه منتج تجاري يوفر طبقة مجانية. يتيح لك ذلك تقليل الحاجة إلى دمج خادم محاكاة مستقل ومشغّل اختبارات وأداة مواصفات يدويًا.
ابدأ من الطرفية
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog mock --help
ينشئ Apidog محاكاة ذكية تلقائيًا من نقاط النهاية التي تعرّفها، مع استجابات تتبع أنواع الحقول وتسمياتها. على سبيل المثال، يمكن لحقل phone أن يرجع رقم هاتف مناسبًا بدل سلسلة عشوائية. وعندما تحتاج إلى استجابة محددة لطلب معيّن، أضف توقع محاكاة إلى المشروع.
تعمل أوامر mock مع توقعات المحاكاة من السكربتات وCI، إلى جانب أوامر نقاط النهاية والمخططات والبيئات وتشغيل الاختبارات. يكون الناتج JSON منظمًا ويتضمن الحقل agentHints.nextSteps، لذلك يمكن استخدامه بواسطة المطورين ووكلاء الذكاء الاصطناعي. راجع دليل Apidog CLI الكامل لمعرفة سطح الأوامر بالكامل.
الأفضل لـ: الفرق التي تريد حفظ المحاكاة والمواصفات والاختبارات في مكان واحد. نزّل Apidog لتجربة خادم المحاكاة المدمج وCLI على مشروعك.
حدود مهمة: هذه منصة تتطلب مشروعًا وتسجيل دخول، وليست أداة أحادية الغرض مثل json-server. إذا كنت تحتاج محاكاة مؤقتة من ملف واحد، فالأدوات الأخف مناسبة أكثر. أما إذا كنت تصمم API بالفعل في Apidog، فالمحاكاة تكون جزءًا من سير عملك.
كيف تختار
طابق الأداة مع ما تملكه حاليًا:
| الأداة | الأفضل لـ | التثبيت | مفتوح المصدر؟ | ملاحظات |
|---|---|---|---|---|
| Prism | خدمة مواصفات OpenAPI كمحاكاة | npx @stoplight/prism-cli |
نعم، Apache-2.0 | دقيق للعقد، عديم الحالة، المنفذ 4010 |
| Mockoon CLI | تشغيل محاكاة صُممت بواجهة رسومية بدون واجهة | npx @mockoon/cli |
نعم، MIT | يقرأ ملف env أو OpenAPI، وصورة Docker متاحة |
| json-server | إنشاء REST API فورية من JSON | npx json-server |
نعم، MIT | CRUD حافظة للحالة، بلا مواصفات، المنفذ 3000 |
| MockServer | مطابقة دقيقة للطلبات | java -jar mockserver-netty-*.jar |
نعم، Apache-2.0 | JVM، غلاف npm متاح، المنفذ 1080 |
| WireMock | تطوير واختبار JVM بمحرك واحد | java -jar wiremock-standalone.jar |
نعم، Apache-2.0 | تسجيل وإعادة تشغيل، Docker، المنفذ 8080 |
| Apidog CLI | محاكاة ومواصفات واختبارات في مشروع واحد | npm install -g apidog-cli |
لا، طبقة مجانية | محاكاة ذكية تلقائية وتوقعات مدارة |
قاعدة سريعة:
- لديك OpenAPI؟ استخدم Prism أو Mockoon CLI.
- لا تملك سوى بيانات أولية؟ استخدم json-server.
- تحتاج مطابقة صارمة للرؤوس أو الأجسام أو التأخيرات؟ استخدم MockServer أو WireMock.
- تريد إدارة المحاكاة مع التصميم والاختبارات؟ استخدم Apidog.
إذا لم تكن متأكدًا مما إذا كانت المحاكاة تستحق الإضافة أصلًا، راجع حالات استخدام محاكاة API.
الخلاصة
ابدأ بما لديك:
- مواصفات → Prism أو Mockoon CLI.
- ملف JSON وبيانات أولية → json-server.
- حاجة إلى مطابقة طلبات صارمة → MockServer أو WireMock.
- مشروع موحد للتصميم والمحاكاة والاختبارات → Apidog CLI.
كل الأدوات الست تعمل من الطرفية ويمكن إدراجها في CI وتمنحك API وهمية خلال ثوانٍ. اختر أصغر أداة تغطي الحالة الحالية، ثم أضف التعقيد فقط عندما تحتاج إليه. لتجربة المسار المتكامل، نزّل Apidog وأنشئ خادمًا وهميًا من تصميم API الخاص بك.
Top comments (0)