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

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

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

ابدأ الدورة

مقدمة إلى GraphQL API بلغة Java

GraphQL هي لغة استعلام حديثة لواجهات API، تتيح للعملاء طلب البيانات التي يحتاجونها فقط. على عكس REST، حيث تكون بنية الاستجابة ثابتة، توفر GraphQL المرونة والكفاءة. في هذا البرنامج التعليمي خطوة بخطوة، سنقوم بإنشاء GraphQL API كامل بلغة Java باستخدام المكتبة الشهيرة graphql-java وSpring Boot. ستتعلم كيفية إعداد الخادم، وتحديد المخطط، وكتابة المحللين (Resolvers)، وتنفيذ الاستعلامات. جميع أمثلة الكود جاهزة للتشغيل.



ما الذي ستتعلمه

  • كيفية إعداد مشروع Spring Boot لـ GraphQL
  • كيفية تحديد مخطط GraphQL (الأنواع، الاستعلامات، التحويرات)
  • كيفية كتابة المحللين (Resolvers) بلغة Java
  • كيفية تنفيذ استعلامات query و mutation


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

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

<dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <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></dependencies>

توفر هذه المكتبات التكامل بين GraphQL وSpring Boot وتسهل العمل مع المخططات. بعد إضافة التبعيات، قم بتحديث المشروع.



هيكل المشروع

سيحتوي مشروعنا على المكونات الرئيسية التالية:

  • مخطط GraphQL (ملف schema.graphqls)
  • نماذج البيانات (Java POJO)
  • المحللون (Resolvers) (معالجات الاستعلامات)
  • وحدة تحكم (Controller) للاختبار


2. تحديد مخطط GraphQL

أنشئ ملف src/main/resources/schema.graphqls. فيه سنصف أنواع البيانات والعمليات المتاحة. على سبيل المثال، سنأخذ نموذج "كتاب":

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

type Query { getBook(id: ID!): Book getAllBooks: [Book]}

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

هنا Book هو نوع كائن بحقول إلزامية (!). Query يحدد نقاط الدخول لقراءة البيانات، بينما Mutation يحددها لتعديل البيانات. لاحظ: في GraphQL، تُستخدم التحويرات (Mutations) لإنشاء البيانات وتحديثها وحذفها.



3. إنشاء نماذج Java والمحللين (Resolvers)

نموذج Book

لننشئ فئة POJO بسيطة Book.java:

public class Book {    private String id;    private String title;    private String author;    private int year;

public Book(String id, String title, String author, int year) { this.id = id; this.title = title; this.author = author; this.year = year; }

// getters and setters public String getId() { return id; } public String getTitle() { return title; } public String getAuthor() { return author; } public int getYear() { return year; }}


محلل (Resolver) للاستعلامات (Query)

المحللون يربطون المخطط بالبيانات. لننشئ فئة QueryResolver.java:

import com.coxautodev.graphql.tools.GraphQLQueryResolver;import org.springframework.stereotype.Component;import java.util.*;

@Componentpublic class QueryResolver implements GraphQLQueryResolver {

private final List<Book

المدونات

توصيات الكتب