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

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

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

ابدأ الدورة

مقدمة: لماذا يعتبر GraphQL وKotlin ثنائياً مثالياً لواجهات API الحديثة

تتطلب تطوير الويب الحديث واجهات API مرنة وعالية الأداء. REST، الذي كان معياراً لفترة طويلة، غالباً ما يؤدي إلى مشكلة over-fetching (عندما يرسل الخادم بيانات أكثر من اللازم) أو under-fetching (عندما تكون هناك حاجة لعدة طلبات للحصول على معلومات كاملة). يحل GraphQL هذه المشكلات من خلال السماح للعميل بطلب البيانات المطلوبة فقط في طلب واحد.

Kotlin، بدوره، هي لغة حديثة وموجزة وآمنة من حيث الأنواع، وهي مناسبة تماماً لبناء خدمات خلفية موثوقة. بفضل مكتبة graphql-kotlin من مجموعة Expedia Group، يصبح إنشاء واجهة GraphQL API باستخدام Kotlin أمراً بسيطاً وبديهياً. في هذا البرنامج التعليمي، سنقوم خطوة بخطوة بإنشاء واجهة GraphQL API كاملة لإدارة قائمة الكتب.

ما ستتعلمه:

  • كيفية إعداد مشروع على Spring Boot مع دعم GraphQL.
  • كيفية تعريف مخطط GraphQL باستخدام فئات Kotlin.
  • كيفية تنفيذ الاستعلامات (Queries) والتحويرات (Mutations).
  • كيفية اختبار واجهة API من خلال بيئة GraphiQL IDE المدمجة.


الخطوة 1: إعداد المشروع والتبعيات

لنبدأ بإنشاء مشروع Spring Boot جديد. سنستخدم Gradle (Kotlin DSL) - وهو المعيار لمشاريع Kotlin الحديثة.



1.1. إنشاء المشروع

يمكنك استخدام Spring Initializr أو إنشاء الهيكل يدوياً. سنحتاج إلى التبعيات التالية:

  • Spring Web - لتشغيل خادم HTTP.
  • Spring Boot Starter GraphQL - التكامل الرئيسي.
  • Kotlin Reflection - لعمل مكتبة graphql-kotlin.


1.2. ملف build.gradle.kts

plugins {    id("org.springframework.boot") version "3.2.0"    id("io.spring.dependency-management") version "1.1.4"    kotlin("jvm") version "1.9.20"    kotlin("plugin.spring") version "1.9.20"}

group = "com.example"version = "0.0.1-SNAPSHOT"

java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}

repositories { mavenCentral()}

dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-graphql") implementation("com.expediagroup:graphql-kotlin-spring-server:7.0.1") implementation("org.jetbrains.kotlin:kotlin-reflect") testImplementation("org.springframework.boot:spring-boot-starter-test")}


1.3. إعداد application.yml

spring:  graphql:    graphiql:      enabled: true  # تفعيل بيئة IDE المدمجة للاختبار    schema:      locations: "classpath:graphql/**/"server:  port: 8080


الخطوة 2: تعريف المخطط ونموذج البيانات

في GraphQL، المخطط هو عقد بين العميل والخادم. تتيح مكتبة graphql-kotlin تعريف المخطط تلقائياً بناءً على فئات Kotlin (نهج code-first). هذا يلغي الحاجة إلى كتابة ملفات .graphqls يدوياً.



2.1. إنشاء نموذج البيانات

لننشئ نموذجاً بسيطاً Book ومستودعاً لتخزين البيانات في الذاكرة.

package com.example.graphqlkotlin.model

data class Book( val id: String, val title: String, val author: String, val year: Int)


2.2. المستودع (in-memory)

package com.example.graphqlkotlin.repository

import com.example.graphqlkotlin.model.Bookimport org.springframework.stereotype.Repositoryimport java.util.concurrent.ConcurrentHashMap

@Repositoryclass BookRepository { private val books = ConcurrentHashMap( mapOf( "1" to Book("1", "الحرب والسلام", "ليو تولستوي", 1869), "2" to Book("2", "الجريمة والعقاب", "فيودور دوستويفسكي", 1866) ) )}

المدونات

توصيات الكتب