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

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

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

ابدأ الدورة

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



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



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



  • دعم كامل لمواصفات GraphQL — تنفذ المكتبة جميع الميزات الأساسية: الاستعلامات (queries)، الطفرات (mutations)، الاشتراكات (subscriptions) والواجهات.
  • أمان الأنواع — الكتابة الصارمة للمخطط تمنع الأخطاء في مرحلة التجميع وتجعل واجهة برمجة التطبيقات أكثر قابلية للتنبؤ.
  • إعداد مرن — إمكانية تخصيص المخطط وإضافة التوجيهات والامتدادات.
  • التكامل مع الأطر الشائعة — توافق ممتاز مع Spring Boot و Micronaut و Quarkus وغيرها.
  • الأداء — معالجة فعالة للاستعلامات باستخدام DataLoader لحل مشكلة N+1.


التثبيت والإعداد



لبدء العمل مع GraphQL Java، أضف التبعية إلى ملف pom.xml الخاص بك (Maven):



<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



يحدد مخطط GraphQL أنواع البيانات والعمليات المتاحة للعملاء. لنلق نظرة على مثال لمخطط بسيط لنظام إدارة المستخدمين:



type User {    id: ID!    name: String!    email: String!    age: Int    posts: [Post]}

type Post { id: ID! title: String! content: String! author: User!}

type Query { user(id: ID!): User users: [User] post(id: ID!): Post}

type Mutation { createUser(name: String!, email: String!, age: Int): User updateUser(id: ID!, name: String, email: String): User}


التنفيذ بلغة Java



للعمل مع GraphQL Java، تحتاج إلى إنشاء فئات محللة (resolvers) ستقوم بمعالجة الاستعلامات. مثال على محلل للمستخدمين:



import graphql.kickstart.tools.GraphQLQueryResolver;import org.springframework.stereotype.Component;import java.util.List;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;

@Componentpublic class UserQueryResolver implements GraphQLQueryResolver { private final Map<String, User> users = new ConcurrentHashMap<>(); public User user(String id) { return users.get(id); } public List<User> users() { return List.copyOf(users.values()); }}


محلل للطفرات:



import graphql.kickstart.tools.GraphQLMutationResolver;import org.springframework.stereotype.Component;import java.util.UUID;

@Componentpublic class UserMutationResolver implements GraphQLMutationResolver { private final Map<String, User> users = new ConcurrentHashMap<>(); public User createUser(String name, String email, Integer age) { String id = UUID.randomUUID().toString(); User user = new User(id, name, email, age); users.put(id, user); return user; }}


نموذج البيانات



لنحدد الفئة User لتمثيل البيانات:



public class User {    private String id;    private Stri                    

توصيات