GraphQL بنهج Schema-First و SDL والنماذج المشتركة
GraphQL بنهج Schema-First و SDL والنماذج المشتركة
ركزت دروس GraphQL السابقة على نهج code-first. يدعم NestJS أيضاً نهج schema-first حيث تكون لغة تعريف مخطط GraphQL هي العقد وتولد أنواع TypeScript حولها. يناسب ذلك الفرق التي تعتبر مراجعة المخطط طبقة حوكمة API.
الفكرة الأساسية
تدور هذه الميزة حول التحكم في كيفية تنظيم التطبيق وسلوكه وقت التشغيل. النقاط التالية هي ما يجب أن يعرفه المطور قبل استخدامها في مشروع حقيقي:
- ينشئ code-first ملفات SDL من أصناف TypeScript المزخرفة؛ بينما يبدأ schema-first من ملفات .graphql.
- يفيد autoSchemaFile في code-first، بينما توجه typePaths تطبيق Nest إلى ملفات SDL في schema-first.
- تستطيع DefinitionsFactory توليد تعريفات TypeScript من المخطط.
- تقلل النماذج المشتركة التكرار، لكن أنواع GraphQL يجب ألا تسرب حقول التخزين الداخلي افتراضياً.
- يشجع schema-first مراجعة API صريحة لأن فروق المخطط سهلة الفحص.
مثال عملي
يوضح المثال التالي الشكل العملي للفكرة داخل مشروع NestJS. ليست الغاية حفظ الكود، بل فهم مكانه في المعمارية:
قائمة تطبيق إنتاجية
- اختر نهج GraphQL واحداً لكل سياق محدد.
- راجع SDL المولد في طلبات السحب عند استخدام code-first.
- تجنب كشف كيانات ORM مباشرة كعقود GraphQL.
- ولّد تعريفات TypeScript بثبات في مشاريع schema-first.
الخلاصة
يغطي هذا الدرس جزءاً متقدماً من NestJS يجب فهمه عند بناء تطبيقات مؤسسية. ركّز على الحدود الواضحة، والسلوك القابل للاختبار، واختيار الأداة المناسبة للسياق بدلاً من استخدام كل ميزة في كل مكان.