دليل GraphQL: البدء مع Spring لـ GraphQL

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

Amir Hassan

Amir Hassan

21 أغسطس 2025

دليل GraphQL: البدء مع Spring لـ GraphQL

enterprise.banner.title

enterprise.banner.feature1

enterprise.banner.feature2

enterprise.banner.feature3

enterprise.banner.ctaB

في المشهد المتطور باستمرار لتطوير الويب، GraphQL ظهر كبديل قوي لواجهات برمجة التطبيقات REST التقليدية، حيث يقدم نهجًا أكثر مرونة وكفاءة لجلب البيانات. إذا كنت متشوقًا لاستكشاف هذه التكنولوجيا الإبداعية ودمجها بسلاسة مع Spring، فقد أتيت إلى المكان الصحيح.

مرحبًا بك في البرنامج التعليمي الشامل لـ GraphQL، حيث سنبدأ رحلة لفهم مفاهيم GraphQL وإرشادك خلال عملية البدء مع Spring لـ GraphQL.

ما هو Spring GraphQL وما هي ميزاته الرئيسية

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

تشمل الميزات الرئيسية لـ Spring GraphQL:

كيفية إعداد بيئتك؟

قبل أن تبدأ رحلتك مع GraphQL وSpring، تأكد من أن إعدادك جاهز. إليك كيفية إعداد بيئتك لبناء مشروع Spring Boot مع GraphQL:

المتطلبات المسبقة:

إنشاء مشروع Spring Boot:

Spring Initializr: انتقل إلى start.spring.io، نقطة البداية لمشاريع Spring Boot.

أولاً، قدم تفاصيل إعداد المشروع مثل تسمية مشروعك، وتحديد اسم مجموعة بتنسيق المجال العكسي (على سبيل المثال، com.example)، وتحديد اسم الحزمة لشفرتك البرمجية. يمكنك أيضًا تضمين بيانات وصفية مثل وصف ونسخة إذا لزم الأمر.

ثانيًا، أضف الاعتمادات الضرورية. في قسم الاعتمادات، اختر "Spring Web" لتمكين الدعم لإنشاء تطبيقات الويب مع Spring. بالمثل، تحقق من "Spring GraphQL" لتمكين الميزات المتعلقة بـ GraphQL. بمجرد أن تقوم بتكوين مشروعك واختيار الاعتمادات، انقر على زر "توليد" للمتابعة.

استيراد مشروعك إلى IDE الخاص بك:

أولاً، قم استخراج محتويات ملف ZIP للوصول إلى محتوياته. ثانيًا، افتح بيئة التطوير المتكاملة الخاصة بك (IDE)، مثل IntelliJ IDEA. بعد ذلك، استورد المشروع الذي قمت باستخراجه مسبقًا.

هذا كل ما في الأمر! بيئتك جاهزة، لقد أنشأت مشروع Spring Boot، ولديك GraphQL على متن الطائرة. IDE الخاص بك هو ملعبك لمغامرات البرمجة.

كيفية إعداد طبقة البيانات؟

في هذا القسم، سنقوم بإنشاء مثال بسيط، مثل مقهى، لإظهار كيف يمكن أن يعزز GraphQL استرداد البيانات وإدارتها.

مقدمة عن المثال:

تخيل أنك تطور واجهة برمجة تطبيقات لمقهى لإدارة قائمة الطعام والطلبات. لتوضيح ذلك، سنقوم بتعريف نماذج البيانات الأساسية لعناصر القهوة والعملاء، وإعداد خدمة للتعامل مع هذه البيانات.

تعريف نماذج البيانات الأساسية:

لنبدأ بإنشاء نموذجين بيانات بسيطين: Coffee وSize. سيتم تنفيذ هذه النماذج كفئات Java، تحتوي كل منها على خصائص تمثل المعلومات ذات الصلة.
ستحتاج إلى إنشاء فئتين في ملفين مختلفين وفي كل فئة، تحتاج إلى إضافة منشئات، ومجتزئات، ومحددات للخصائص.

public class Coffee {
    private int id;
    private String name;
    private Size size;

    // Constructors, getters, setters
}

public class Size {
    private int id;
    private String name;

    // Constructors, getters, setters
}

بعد إنشاء وإضافة هذه الفئات، تحتاج إلى التأكد من أنها موجودة في الحزمة المناسبة داخل مشروع Spring Boot الخاص بك. يجب أن تعكس بنية الحزمة اسم الحزمة الذي قدمته عند توليد المشروع في Spring Initializr.

إليك كيفية إضافة المحددات والمجتزئات والمنشئات لفئة Coffee.java.

هيكل الحزمة

إعداد إدارة البيانات:

سنقوم بإنشاء فئة بسيطة CoffeeService لتكون مستودع بيانات في الذاكرة وإدارة بيانات القهوة. للتوضيح، سنقوم بتعبئة هذا المستودع ببضع عناصر قهوة نموذجية.

import java.util.ArrayList;
import java.util.List;

@Component
public class CoffeeService {

	private final List<Coffee> coffees = new ArrayList<>();

	@PostConstruct
	public void init() {
    	Size smallSize = new Size(1, "Small");
    	Size mediumSize = new Size(2, "Medium");
    	Size largeSize = new Size(3, "Large");

    	coffees.add(new Coffee(1, "Espresso", smallSize));
    	coffees.add(new Coffee(2, "Latte", mediumSize));
    	coffees.add(new Coffee(3, "Cappuccino", largeSize));
	}

	public List<Coffee> getAllCoffees() {
    	return coffees;
	}

	public Coffee getCoffeeById(int id) {
    	return coffees.stream()
        	.filter(coffee -> coffee.getId() == id)
        	.findFirst()
        	.orElse(null);
	}
}

تدير فئة CoffeeService بيانات القهوة ذات الصلة، وتتact كخدمة تخزين واسترداد. تقوم بتهيئة بيانات القهوة النموذجية عند إنشائها، مما يوفر طرقًا لاسترداد جميع القهوة أو واحدة محددة حسب ID. يعمل هذا التجريد على تبسيط الوصول إلى البيانات والتلاعب بها، مما يعد البيانات للتفاعل ضمن مخطط GraphQL.

إدارة البيانات

كيفية إنشاء مخطط GraphQL؟

إنشاء ملف باسم schema.graphqls في مجلد src/main/resources وتحديد مخطط GraphQL باستخدام لغة تعريف المخططات (SDL).

type Query {
	getAllCoffees: [Coffee!]!
	getCoffeeById(id: Int!): Coffee
}

type Coffee {
	id: Int!
	name: String!
	size: Size!
}

type Size {
	id: Int!
	name: String!
}

إليك كيفية القيام بذلك.

مخططات GraphQL

إنشاء جلب البيانات:

يحدد الرمز فئة تسمى CoffeeDataFetcher مسؤولة عن استرداد البيانات لاستعلامات GraphQL. وهي معلمة بـ @Component لتديرها Spring. يقوم الجالب getAllCoffees() باسترداد قائمة من عناصر القهوة باستخدام طريقة coffeeService.getAllCoffees(). يقوم الجالب getCoffeeById() باستخراج ID من معاملات الاستعلام ويستخدمه لاسترداد عنصر قهوة محدد من CoffeeService.

import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class CoffeeDataFetcher {

	@Autowired
	private CoffeeService coffeeService;

	public DataFetcher<List<Coffee>> getAllCoffees() {
    	return environment -> coffeeService.getAllCoffees();
	}

	public DataFetcher<Coffee> getCoffeeById() {
    	return environment -> {
        	int id = environment.getArgument("id");
        	return coffeeService.getCoffeeById(id);
    	};
	}
}

إليك كيفية القيام بذلك.

جلب البيانات

إنشاء وحدة تحكم GraphQL:

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

import graphql.GraphQL;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GraphQLController {

	@Autowired
	private GraphQL graphQL;

	@PostMapping("/graphql")
	public Map<String, Object> executeQuery(@RequestBody String query) {
    	ExecutionResult executionResult = graphQL.execute(query);
    	return executionResult.toSpecification();
	}
}

ستتعامل هذه الوحدة مع استعلامات GraphQL الواردة وتتفاعل مع مخطط GraphQL الخاص بك. توفر نقطة نهاية RESTful في /graphql التي تقبل طلبات POST مع استعلام GraphQL في جسم الطلب. ثم تستخدم الوحدة فصل GraphQL لتنفيذ الاستعلام وتعيد نتيجة التنفيذ كخريطة.

Spring GraphQL هو إطار عمل قوي يمكن المطورين من بناء واجهات برمجة التطبيقات بكفاءة باستخدام لغة استعلام GraphQL. على عكس واجهات برمجة التطبيقات REST التقليدية، حيث تحدد نقاط نهاية متعددة استرجاع البيانات، يمكّن GraphQL العملاء من تحديد البيانات التي يحتاجونها بالضبط في طلب واحد، مما يقلل من الاسترجاع الزائد أو الناقص للبيانات. يستفيد Spring GraphQL من قوة بيئية Spring، مما يجمع بين بساطة Spring Boot مع مرونة GraphQL.

تتضمن العملية تحديد نماذج البيانات الخاصة بك، وإنشاء طبقة خدمة لإدارة البيانات، وتأسيس مخطط بأنواع واستعلامات. يضمن النهج التركيز على المخطط لـ Spring GraphQL تصميمًا واضحًا وعملية تطوير منظمة. يتم تبسيط جلب البيانات من خلال المحللين، ويتم تسهيل التحديثات في الوقت الحقيقي من خلال الاشتراكات.

أدوات اختبار GraphQL:

أصبح GraphQL طريقة شائعة لبناء الواجهات البرمجية، واختبارها أمر حاسم لضمان أنها تعمل بشكل صحيح. تساعد أدوات الاختبار المطورين على التحقق مما إذا كانت واجهات برمجة التطبيقات الخاصة بهم تعمل كما هو مقصود.

واحدة من هذه الأدوات هي Apidog، والتي تقدم مجموعة من الميزات لجعل اختبار واجهات برمجة التطبيقات أسهل. دعونا نلقي نظرة على ما يمكن أن يفعله Apidog ونتحدث عن بعض أدوات الاختبار المفيدة الأخرى لـ GraphQL.

Apidog GraphQL

Apidog:

Apidog هو مجموعة أدوات متعددة الاستخدامات تغطي عملية إنشاء واجهات برمجة التطبيقات بالكامل. إنه مثل سكين جيب سويسري للواجهات البرمجية، يساعد في التصميم والاختبار والمزيد. إليك ما يقدمه Apidog:

ما يقدمه Apidog لاختبار GraphQL:

يعمل Apidog بشكل جيد أيضًا لاختبار واجهات برمجة التطبيقات GraphQL. لديه ميزات مثل:

الخاتمة

مع استمرار تطور واجهات برمجة التطبيقات، فإن دمج GraphQL وSpring GraphQL وأدوات مثل Apidog يعيد تشكيل كيفية إنشاء واجهات برمجة التطبيقات. يمنح هذا المزيج المطورين مزيدًا من التحكم والكفاءة، مما ينتج عنه واجهات برمجة تطبيقات قوية وقابلة للتكيف وعالية الأداء.

Explore more

أين يمكن تنزيل Swagger UI باللغة العربية مجانًا

أين يمكن تنزيل Swagger UI باللغة العربية مجانًا

استكشف صعوبة الحصول على واجهة باللغة العربية لـ Swagger UI وتعرف على سبب كون Apidog بديلاً قويًا لمنصة تطوير واجهات برمجة التطبيقات (APIs).

23 أبريل 2025

أين يمكن تحميل Postman بالعربية مجانًا؟ استكشاف الخيارات وبديل Apidog

أين يمكن تحميل Postman بالعربية مجانًا؟ استكشاف الخيارات وبديل Apidog

هل يمكنك تحميل Postman بالعربية مجانًا؟ بينما يفتقر Postman للدعم الأصلي للغة العربية، توجد حلول بديلة. استكشفها واكتشف Apidog، بديل Postman القوي والموحد المصمم لتبسيط سير عمل API بالكامل، بغض النظر عن اللغة.

22 أبريل 2025

للمبتدئين: الاستخدام الأساسي لبرنامج Postman

للمبتدئين: الاستخدام الأساسي لبرنامج Postman

Postman هي أداة أساسية لاختبار واجهات برمجة التطبيقات (API). يمكن أن يُحسن كفاءتك عند تنفيذ استراتيجيات API. في هذه المقالة، سأشرح أساسيات استخدام Postman، لتمكين المستخدمين الجدد من تعلمه بسهولة من خلال هذا الدليل.

25 مارس 2025

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات