GraphQL APIs with Spring Boot · درس

تجزئة المخطط باستخدام امتدادات الأنواع

حافظ على قابلية صيانة مخططات GraphQL الكبيرة عبر تقسيمها إلى ملفات SDL متعددة وتوسيع الأنواع الجذرية المشتركة باستخدام الكلمة المفتاحية extend في Spring Boot.

الدرس 4 من 413 خطوة

تجزئة المخطط باستخدام امتدادات الأنواع درس مجاني في GraphQL APIs with Spring Boot على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في GraphQL APIs with Spring Boot، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة GraphQL APIs with Spring Boot 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

The Monolithic Schema Problem

As an API grows, a single schema.graphqls file becomes thousands of lines, hard to navigate and prone to merge conflicts.

Modularization splits the schema by feature so each team owns a focused slice.

Modularization vs Stitching

This is different from schema stitching. Stitching merges schemas from separate services. Modularization splits one service's schema into many files that load into the same runtime.

Multiple SDL Files in Spring

Spring for GraphQL automatically loads every .graphqls file under src/main/resources/graphql/ and merges them into one schema.

graphql/
  book.graphqls
  author.graphqls
  review.graphqls

The Single Root Problem

GraphQL allows only one Query type. If two files both declare type Query, the schema fails to build with a duplicate-type error.

Extending the Root Type

Declare type Query once, then use extend type Query in other files to add fields. The pieces merge into one root.

# book.graphqls
type Query { books: [Book!]! }

# author.graphqls
extend type Query { authors: [Author!]! }

Extending Object Types

extend works on any object type, not just roots. A reviews module can add a field to Book without editing the book file.

# review.graphqls
extend type Book {
  reviews: [Review!]!
}

Resolvers Stay Modular Too

Each module gets its own controller. The extended field on Book is resolved by a @SchemaMapping in the review module's controller.

@Controller
public class ReviewController {
    @SchemaMapping(typeName = "Book")
    public List<Review> reviews(Book book) {
        return reviewService.forBook(book.getId());
    }
}

Sharing Common Types

Cross-cutting types like PageInfo or shared enums live in a common.graphqls file. Every module references them without redefining.

# common.graphqls
type PageInfo {
  hasNextPage: Boolean!
  endCursor: String
}

Organizing by Feature

Group SDL files and controllers by feature, not by GraphQL kind. Keep book.graphqls next to BookController mentally, so a feature change touches one cohesive area.

Validation at Startup

Spring assembles and validates the merged schema at startup. If an extend references a type that does not exist, the application fails fast with a clear error, catching mistakes early.

Best Practices

Keep modular schemas healthy:

  • Declare each root type once, extend elsewhere
  • One SDL file and controller per feature
  • Centralize shared types in a common file
  • Let startup validation guard your merges

Quick Check

Test your schema modularization knowledge.

Recap

You modularized a large schema:

  • Split SDL into multiple feature files Spring auto-merges
  • Declare root types once, add fields with extend
  • Extend any object type from another module
  • Centralize shared types and keep resolvers modular

Modular schemas scale cleanly across teams and features.

البدء مجانًا

تعلم GraphQL APIs with Spring Boot مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
12
الدروس
48

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

هل درس «تجزئة المخطط باستخدام امتدادات الأنواع» مجاني؟

نعم — نص درس «تجزئة المخطط باستخدام امتدادات الأنواع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة GraphQL APIs with Spring Boot، انتقل إلى CoddyKit PRO. تتضمن دورة GraphQL APIs with Spring Boot 4 دروس في المجموع.

ماذا ستتعلم في «تجزئة المخطط باستخدام امتدادات الأنواع»؟

حافظ على قابلية صيانة مخططات GraphQL الكبيرة عبر تقسيمها إلى ملفات SDL متعددة وتوسيع الأنواع الجذرية المشتركة باستخدام الكلمة المفتاحية extend في Spring Boot. تتمرن على GraphQL APIs with Spring Boot مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ GraphQL APIs with Spring Boot؟

لا تُشترط خبرة سابقة. GraphQL APIs with Spring Boot على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تجزئة المخطط باستخدام امتدادات الأنواع»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس GraphQL APIs with Spring Boot هذا؟

نعم. كل درس في GraphQL APIs with Spring Boot يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بناء Directives مخصصة
  2. أساسيات Schema Stitching
  3. دمج مخططات GraphQL متعددة
  4. تجزئة المخطط باستخدام امتدادات الأنواع
← العودة إلى GraphQL APIs with Spring Boot