GraphQL API مع Java: دليل تعليمي خطوة بخطوة عملي

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

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

ابدأ الدورة

مقدمة في GraphQL API بلغة Java

\n\n

GraphQL هي لغة استعلام لواجهات API، تتيح للعملاء طلب البيانات التي يحتاجونها فقط. على عكس REST، حيث يكون هيكل الاستجابة ثابتًا، فإن GraphQL يسمح بتشكيل الاستجابات بمرونة، مما يقلل بشكل كبير من حجم البيانات المنقولة ويسرع التطوير.

\n\n

في هذا الدليل التعليمي، سنشرح عمليًا كيفية إنشاء GraphQL API مع Java باستخدام مكتبة graphql-java وإطار العمل Spring Boot. ستتعلم كيفية إعداد المخطط (Schema)، وكتابة المحللات (Resolvers)، وتنفيذ الاستعلامات.

\n\n

ستكون المقالة مفيدة لمطوري Java الذين يرغبون في إتقان النهج الحديث لبناء واجهات API وتحسين التفاعل بين العميل والخادم.

\n\n

1. إعداد المشروع والتبعيات

\n\n

لنبدأ بإنشاء مشروع Spring Boot جديد. الأفضل استخدام Spring Initializr. أضف التبعيات التالية:

\n\n
    \n
  • Spring Web — لتشغيل خادم الويب
  • \n
  • Spring Boot DevTools — لتسريع التطوير
  • \n
  • Lombok — لتقليل الكود النمطي
  • \n
\n\n

بعد إنشاء المشروع، أضف مكتبة GraphQL الأساسية إلى pom.xml:

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>\n    <version>2021-06-30T00-00-00-1e4b5e5</version>\n</dependency>
\n\n

ستحتاج أيضًا إلى مكتبة للعمل مع أداة GraphiQL (واجهة ويب لاختبار الاستعلامات):

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphiql-spring-boot-starter</artifactId>\n    <version>5.0.2</version>\n</dependency>
\n\n

بعد إضافة التبعيات، قم بتحديث المشروع وتشغيله. افتراضيًا، سيكون GraphiQL متاحًا على العنوان http://localhost:8080/graphiql.

\n\n

2. إنشاء نموذج البيانات ومخطط GraphQL

\n\n

للتوضيح، سننشئ نموذجًا بسيطًا Book (كتاب). حدد الفئة بالحقول id و title و author و pages.

\n\n
import lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class Book {\n    private String id;\n    private String title;\n    private String author;\n    private int pages;\n}
\n\n

الآن، نحتاج إلى تعريف مخطط GraphQL. أنشئ ملف schema.graphqls في مجلد src/main/resources:

\n\n
type Query {\n    allBooks: [Book]\n    bookById(id: String): Book\n}\n\ntype Book {\n    id: String\n    title: String\n    author: String\n    pages: Int\n}
\n\n

يصف المخطط استعلامين: الحصول على جميع الكتب والحصول على كتاب حسب المعرف. النوع Book يحتوي على أربعة حقول.

\n\n

لمعالجة الاستعلامات، سننشئ خدمة تخزن البيانات في الذاكرة (للتبسيط):

\n\n
import org.springframework.stereotype.Service;\nimport javax.annotation.PostConstruct;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Optional;\n\n@Service\npublic class BookService {\n    private List<Book> books = new ArrayList<>();\n\n    @PostConstruct\n    public void init() {\n        books.add(new Book("1", "الحرب والسلام", "ليو تولستوي", 1225));\n        books.add(new Book("2", "الجريمة والعقاب", "فيودور دوستويفسكي", 671));\n        books.add(new Book("3", "السيد ومارجريتا", "ميخائيل بولغاكوف", 480));\n    }\n\n    public List<Book> getAllBooks() {\n        return books;\n    }\n\n    public Book getBookById(String id) {\n        Optional<Boo                

المدونات

توصيات الكتب