DEV Community

Cover image for أفضل أدوات CLI خفيفة الوزن لمحاكاة API
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

أفضل أدوات CLI خفيفة الوزن لمحاكاة API

تحتاج إلى واجهة برمجة تطبيقات وهمية الآن: ليس خدمة مستضافة، ولا Docker Compose، ولا واجهة رسومية. فقط أمر يقرأ ملفًا ويبدأ بإرجاع الاستجابات على localhost. هذا هو دور خادم المحاكاة الخفيف: وجّهه إلى مواصفات OpenAPI أو ملف بيانات صغير، شغّل أمرًا واحدًا، ثم اربط به الواجهة الأمامية أو اختباراتك إلى أن يصبح الخادم الخلفي الحقيقي جاهزًا.

جرّب Apidog اليوم

يعرض هذا الدليل ست أدوات 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
Enter fullscreen mode Exit fullscreen mode

سيبدأ Prism افتراضيًا على:

http://127.0.0.1:4010
Enter fullscreen mode Exit fullscreen mode

ما الذي تحصل عليه؟

  • نقطة نهاية لكل عملية معرفة في المواصفات.
  • استجابة example عندما تكون قد عرّفت مثالًا.
  • بيانات مولّدة ومتوافقة مع المخطط عندما لا يوجد مثال.
  • تحقق من الطلبات الواردة مقابل المواصفات؛ الطلب غير المطابق يمكن أن يرجع 422.

للتثبيت العام:

npm install -g @stoplight/prism-cli
prism mock ./openapi.yaml
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: فرق التصميم أولًا (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
Enter fullscreen mode Exit fullscreen mode

يمكن أن يشير --data إلى:

  • ملف بيئة Mockoon مُصدّر.
  • ملف OpenAPI بصيغة JSON.
  • ملف OpenAPI بصيغة YAML.

للتثبيت العام:

npm install -g @mockoon/cli
mockoon-cli start --data ./mockoon-env.json --port 3000
Enter fullscreen mode Exit fullscreen mode

إذا كان ملف البيئة من إصدار أقدم، يرحّله 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
Enter fullscreen mode Exit fullscreen mode

ثم جرّب نقطة النهاية:

curl http://localhost:3000/posts
Enter fullscreen mode Exit fullscreen mode

أضف سجلًا جديدًا

curl -X POST http://localhost:3000/posts \
  -H "Content-Type: application/json" \
  -d '{ "title": "منشور جديد" }'
Enter fullscreen mode Exit fullscreen mode

يوفر json-server تلقائيًا:

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE

ويكتب بيانات POST وعمليات التعديل مرة أخرى إلى db.json، لذلك تحصل على سلوك حافظ للحالة. كما يدعم التصفية والفرز وتقسيم الصفحات عبر معاملات الاستعلام. تراقب سلسلة 1.x الملف وتعيد التحميل عند تغيّره افتراضيًا.

للتثبيت العام:

npm install -g json-server
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: مطوري الواجهة الأمامية الذين يحتاجون إلى API REST عاملة خلال دقيقة، قبل وجود الخلفية الفعلية. الأداة مرخصة تحت MIT، وهي من خيارات خوادم المحاكاة خفيفة الوزن لواجهة RESTful API التي لا تتطلب مواصفات.

حدود مهمة: يفترض json-server نمط REST القائم على الموارد. لا يناسب المسارات المخصصة جدًا أو المطابقة الدقيقة للرؤوس والأجسام أو اختبار التزام العقد.

MockServer

اختر MockServer عندما تحتاج إلى تحديد الطلب المتوقع بدقة: الطريقة، والمسار، والرؤوس، ومعاملات الاستعلام، والجسم. يمكنك أيضًا إرجاع تأخيرات أو إخفاقات لاختبار المهلات ومعالجة الأخطاء.

تشغيل الخادم

java -jar mockserver-netty-5.15.0-no-dependencies.jar -p 1080
Enter fullscreen mode Exit fullscreen mode

سيعمل الخادم على المنفذ 1080.

بعد ذلك، أرسل توقعاتك إلى REST API الخاصة بـ MockServer أو أنشئها برمجيًا. لمشاريع Node.js، استخدم الغلاف الرسمي:

npm install mockserver-node
Enter fullscreen mode Exit fullscreen mode
const mockserver = require('mockserver-node');

mockserver.start_mockserver({
  serverPort: 1080
});
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: اختبارات التكامل التي يجب أن تتحكم بدقة في شكل الطلب والاستجابة، بما في ذلك التأخيرات وحالات الفشل. MockServer مرخص تحت Apache-2.0 ويدعم HTTP وHTTPS والمزيد على منفذ واحد.

حدود مهمة: يحتاج إلى JVM، ولذلك تكون بصمته وزمن بدئه أكبر من أدوات Node. كما أن كتابة التوقعات أكثر تفصيلًا من تمرير ملف OpenAPI. إذا احتجت مقارنة البدائل، راجع بدائل MockServer.

WireMock (مستقل)

WireMock خادم محاكاة راسخ في بيئات Java وJVM. يشغّل ملف JAR المستقل نفس المحرك الذي يمكن تضمينه في اختبارات JUnit، لذلك يمكنك مشاركة التعريفات بين التطوير المحلي والاختبارات.

تشغيل الخادم

java -jar wiremock-standalone.jar --port 8080
Enter fullscreen mode Exit fullscreen mode

سيعمل WireMock على المنفذ 8080.

ضع ملفات التعيين في مجلد mappings/، أو أنشئها عبر JSON API الخاصة به. يستطيع WireMock أيضًا تسجيل حركة مرور API حقيقية وإعادة تشغيلها كتعيينات، وهو مفيد عند محاكاة API خارجية لا تتحكم بها.

تتوفر كذلك صورة Docker رسمية:

wiremock/wiremock
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: فرق 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
Enter fullscreen mode Exit fullscreen mode

ينشئ 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 لا، طبقة مجانية محاكاة ذكية تلقائية وتوقعات مدارة

قاعدة سريعة:

  1. لديك OpenAPI؟ استخدم Prism أو Mockoon CLI.
  2. لا تملك سوى بيانات أولية؟ استخدم json-server.
  3. تحتاج مطابقة صارمة للرؤوس أو الأجسام أو التأخيرات؟ استخدم MockServer أو WireMock.
  4. تريد إدارة المحاكاة مع التصميم والاختبارات؟ استخدم Apidog.

إذا لم تكن متأكدًا مما إذا كانت المحاكاة تستحق الإضافة أصلًا، راجع حالات استخدام محاكاة API.

الخلاصة

ابدأ بما لديك:

  • مواصفات → Prism أو Mockoon CLI.
  • ملف JSON وبيانات أولية → json-server.
  • حاجة إلى مطابقة طلبات صارمة → MockServer أو WireMock.
  • مشروع موحد للتصميم والمحاكاة والاختبارات → Apidog CLI.

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

Top comments (0)