تقع معظم خوادم OpenAPI الوهمية التي عملت معها ضمن واحدة من ثلاث مجموعات: فهي بطيئة في التمهيد (تسخين JVM، دقة وحدة العقدة)، أو أنها تحتاج إلى Docker فقط للتشغيل، أو أنها تعيد نفس كعب الروتين الثابت في كل طلب. لا يعد أي من هذا أمرًا رائعًا عندما تريد فقط إلغاء حظر عمل الواجهة الأمامية أو رسم تكامل مقابل المواصفات التي لا تزال قيد التنفيذ.
لذلك قمت ببناء mock-cli - وهو ثنائي ثابت واحد مكتوب بلغة Rust يقرأ أي مواصفات OpenAPI 3 (YAML أو JSON) ويقدم بيانات وهمية ديناميكية واعية بالمخطط عبر HTTP. لا يوجد وقت تشغيل ولا حاوية ولا ملف تكوين.
لاحظ أن petId يردد معلمة المسار، لكن الاسم والتطعيم عبارة عن بيانات مزيفة جديدة في كل مكالمة. هذا هو بيت القصيد - تحصل الواجهة الأمامية على شكل استجابة واقعي ومتنوع بدون تركيبات الكتابة اليدوية.
بصراحة، لأنني أردت أداة يمكنني شحنها كثنائي ثابت بدون تبعية وقت التشغيل، ولأن مواصفات OpenAPI عبارة عن نموذج بيانات كبير على شكل اتحاد يتم تعيينه بشكل واضح على تعدادات Rust. لا تحتوي نواة التحليل والتوليد (الصناديق/الأساسية) على إدخال/إخراج - فهي عبارة عن تحويل بيانات خالص - مما يجعل اختبارها وإعادة استخدامها أمرًا تافهًا. طبقة HTTP (الصناديق/الخادم) هي أكسوم، وطبقة سطر الأوامر (الصناديق/cli) هي التصفيق. تنظيف تقسيم ثلاثة صناديق.
تم: الاستهزاء الديناميكي، وحقن معلمات المسار، وتنسيق المخطط / التعداد / الحدود المطلوبة / المصفوفة، ودقة $ref مع أمان الدورة، ورموز حالة HTTP الصحيحة، ومضيف ربط قابل للتكوين، وإيقاف تشغيل رشيق.