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

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

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

ابدأ الدورة
```html

مقدمة إلى GraphQL API باستخدام Java

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



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

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



<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java</artifactId>    <version>21.0</version></dependency><dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>    <version>2021-06-28T00-00-00-6e3b7b2</version></dependency>


بعد إضافة الاعتماديات، قم بإنشاء الفئة الرئيسية للتطبيق:



@SpringBootApplicationpublic class GraphqlApplication {    public static void main(String[] args) {        SpringApplication.run(GraphqlApplication.class, args);    }}


الآن سنقوم بإعداد نقطة الدخول لـ GraphQL. قم بإنشاء ملف application.yml في مجلد resources:



graphql:  servlet:    mapping: /graphql    enabled: true    cors-enabled: true


تم! البنية الأساسية للمشروع جاهزة للتشغيل. بعد ذلك ننتقل إلى تعريف المخطط.



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

المخطط هو جوهر GraphQL API. يصف أنواع البيانات والاستعلامات والتحويرات. لنقم بإنشاء ملف 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 deleteBook(id: ID!): Boolean}


هنا قمنا بتعريف:

  • Book — كائن يحتوي على الحقول id و title و author و year.
  • Query — نقاط دخول لقراءة البيانات (قائمة الكتب والبحث بواسطة ID).
  • Mutation — عمليات تعديل البيانات (إضافة وحذف كتاب).

الآن نحتاج إلى تحميل هذا المخطط في التطبيق. لنقم بإنشاء فئة تكوين:



import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import graphql.GraphQL;import graphql.schema.GraphQLSchema;import graphql.schema.idl.RuntimeWiring;import graphql.schema.idl.SchemaGenerator;import graphql.schema.idl.SchemaParser;import graphql.schema.idl.TypeDefinitionRegistry;

import java.io.File;import java.io.IOException;

@Configurationpublic class GraphqlConfig {

@Bean public GraphQL graphQL() throws IOException { File schemaFile = new File("src/main/resources/schema.graphqls"); TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(schemaFile); RuntimeWiring wiring = buildWiring(); GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring); return GraphQL.newGraphQL(schema).build(); }

private RuntimeWiring buildWiring() { return RuntimeWiring.newRuntimeWiring() .type(
```

المدونات

توصيات الكتب