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

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

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

ابدأ الدورة

مقدمة إلى GraphQL و Java

GraphQL هي لغة استعلام حديثة لواجهات API، طورتها Facebook. على عكس REST، حيث يعيد كل نقطة نهاية بنية بيانات ثابتة، تسمح GraphQL للعميل بطلب الحقول التي يحتاجها فقط. هذا يقلل من حجم البيانات المنقولة ويبسط تطوير الواجهات المعقدة.

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

لبدء العمل، ستحتاج إلى: JDK 11+، Maven أو Gradle، IDE (IntelliJ IDEA، Eclipse) ومعرفة أساسية بلغة Java.



1. إعداد مشروع Spring Boot

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

  • Spring Web
  • Spring Boot DevTools
  • Lombok (اختياري، لتبسيط الكود)

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

<dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-spring-boot-starter</artifactId>    <version>5.0.2</version></dependency><dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java-tools</artifactId>    <version>5.2.4</version></dependency>

هذه المكتبات ستبسط تكامل GraphQL مع Spring Boot. بعد تحديث التبعيات، قم بتشغيل المشروع باستخدام الأمر mvn spring-boot:run أو عبر IDE.



2. تعريف مخطط GraphQL

المخطط هو أساس GraphQL API. يصف أنواع البيانات والاستعلامات (queries) والتحويرات (mutations). أنشئ ملف schema.graphqls في مجلد src/main/resources:

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

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

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

هنا قمنا بتعريف نوع Book مع الحقول الإجبارية id و title و author والحقل الاختياري year. يحتوي Query على استعلامين: الحصول على جميع الكتب والحصول على كتاب حسب المعرف. يسمح Mutation بإضافة كتب جديدة.

لاحظ علامة التعجب - فهي تشير إلى حقل إجباري (non-null).



3. تنفيذ المحللين (Resolvers)

المحللون (resolvers) هم فئات Java تربط المخطط بالبيانات. لننشئ فئة Book كنموذج بيانات:

import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;

@Data@NoArgsConstructor@AllArgsConstructorpublic class Book { private String id; private String title; private String author; private Integer year;}

الآن لننشئ خدمة لتخزين الكتب (في مشروع حقيقي سيكون هناك اتصال بقاعدة البيانات):

import org.springframework.stereotype.Service;import javax.annotation.PostConstruct;import java.util.ArrayList;import java.util.List;import java.util.Optional;import java.util.UUID;

@Servicepublic class BookService { private List<Book> books = new ArrayList<>();

@PostConstruct public void init() { books.add(new Book("1", "الحرب والسلام", "ليو تولستوي", 1869)); books.add(new Book("2", "الجريمة والعقاب", "فيودور دوستويفسكي", 1866)); }

public List<Book> getAllBooks() { return books; }

public Optional<Book> getBookById(String id) { return books.str

المدونات

توصيات الكتب