GraphQL Java: دليل شامل لمكتبة إنشاء واجهات برمجة التطبيقات بلغة Java

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

GraphQL Java: أداة قوية لإنشاء واجهات برمجة تطبيقات حديثة



GraphQL Java هي مكتبة خادم للغة Java تتيح للمطورين إنشاء واجهات برمجة تطبيقات مرنة وفعالة وآمنة من حيث الأنواع بناءً على مواصفات GraphQL. على عكس واجهات REST API التقليدية، يتيح GraphQL للعميل طلب البيانات التي يحتاجها فقط، مما يقلل بشكل كبير من حجم المعلومات المنقولة ويسرّع أداء التطبيقات. هذه المكتبة هي التنفيذ الرسمي لـ GraphQL بلغة Java وتدعمها المجتمع بنشاط.



الميزات والفوائد الرئيسية لـ GraphQL Java



  • أمان الأنواع: التحديد الصارم لأنواع جميع البيانات على مستوى المخطط يمنع الأخطاء في مرحلة التنفيذ ويبسط التطوير.
  • مرونة الاستعلامات: يمكن للعملاء طلب الحقول الضرورية فقط، والكائنات المتداخلة، وحتى تنفيذ عمليات متعددة في استعلام واحد.
  • نقطة دخول واحدة: على عكس REST مع نقاط نهاية متعددة، يستخدم GraphQL نقطة نهاية واحدة لجميع الاستعلامات.
  • توثيق تلقائي: يتم إنشاء توثيق تفاعلي بناءً على المخطط (مثل استخدام GraphiQL أو Playground).
  • دعم الاشتراكات (Subscriptions): إمكانية تلقي التحديثات في الوقت الفعلي عبر WebSocket.
  • التكامل مع نظام Java البيئي: يتكامل بسهولة مع Spring Boot و Micronaut و Quarkus وأطر العمل الأخرى.


بدء العمل مع GraphQL Java



لإضافة المكتبة إلى مشروع Maven الخاص بك، أضف التبعية التالية إلى ملف pom.xml:



<dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java</artifactId>    <version>21.3</version></dependency>


بالنسبة لـ Gradle، أضف السطر التالي إلى build.gradle:



implementation 'com.graphql-java:graphql-java:21.3'


إنشاء مخطط GraphQL



المخطط هو أساس أي واجهة API من GraphQL. يحدد أنواع البيانات، والاستعلامات المتاحة (Query)، والتحويرات (Mutation)، والاشتراكات (Subscription). لنلقِ نظرة على مثال لمخطط مكتبة كتب:



type Book {    id: ID!    title: String!    author: String!    year: Int}

type Query { bookById(id: ID!): Book allBooks: [Book]}

type Mutation { addBook(title: String!, author: String!, year: Int): Book}


لتحميل المخطط في Java، استخدم الفئة SchemaParser:



import graphql.schema.idl.SchemaParser;import graphql.schema.idl.TypeDefinitionRegistry;

// تحميل المخطط من ملفFile schemaFile = new File("src/main/resources/schema.graphqls");TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(schemaFile);


تنفيذ Resolver (DataFetcher)



Resolver (أو DataFetcher) هي الفئات التي توفر البيانات لكل حقل في المخطط. مثال على resolver بسيط لاستعلام bookById:



import graphql.schema.DataFetcher;import graphql.schema.DataFetchingEnvironment;

public class BookDataFetcher implements DataFetcher<Book> { @Override public Book get(DataFetchingEnvironment environment) { String id = environment.getArgument("id"); // منطق الحصول على الكتاب من قاعدة البيانات return bookRepository.findById(id); }}


ثم اربط resolver بحقل المخطط:



import graphql.schema.idl.RuntimeWiring;

RuntimeWiring wiring = RuntimeWiring.newRuntimeWiring() .type("Query", builder -> builder.dataFetcher("bookById", new BookDataFetcher())) .type("Mutation", builder -> builder.dataFetcher("addBook", new AddBookDataFetcher())) .build();


تنفيذ الاستعلامات



بعد إعداد المخطط

توصيات