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

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

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

ابدأ الدورة

مقدمة في GraphQL API مع Kotlin

GraphQL هي لغة استعلام لواجهات API، تم تطويرها بواسطة Facebook، والتي تتيح للعملاء طلب البيانات التي يحتاجونها فقط. على عكس REST، حيث يعيد كل نقطة نهاية بنية بيانات ثابتة، يوفر GraphQL المرونة والتحكم. Kotlin، كونه لغة حديثة ومكتوبة بشكل ثابت لـ JVM، مثالي لإنشاء مثل هذه الـ API بفضل إيجازها وأمانها. في هذا الدليل التعليمي، سنقوم خطوة بخطوة بإنشاء خادم GraphQL بسيط باستخدام Kotlin ومكتبة graphql-kotlin و Spring Boot.

بنهاية المقال، ستتعلم:

  • إعداد مشروع Kotlin مع Gradle
  • تحديد مخطط GraphQL (الأنواع، الاستعلامات، التحويرات)
  • تنفيذ المحللات لمعالجة الاستعلامات
  • اختبار الـ API من خلال GraphQL Playground


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

للبدء، سننشئ مشروع Kotlin جديد باستخدام Gradle. سنستخدم Spring Boot لتبسيط التهيئة و graphql-kotlin-spring-server لتكامل GraphQL.

إنشاء المشروع الأساسي

أنشئ دليل المشروع وملف 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.21"    kotlin("plugin.spring") version "1.9.21"}

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

java { sourceCompatibility = JavaVersion.VERSION_17}

repositories { mavenCentral()}

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

tasks.withType { kotlinOptions { freeCompilerArgs += "-Xjsr305=strict" jvmTarget = "17" }}

ثم أنشئ الفئة الرئيسية للتطبيق في src/main/kotlin/com/example/Application.kt:

package com.example

import org.springframework.boot.autoconfigure.SpringBootApplicationimport org.springframework.boot.runApplication

@SpringBootApplicationclass Application

fun main(args: Array<String>) { runApplication<Application>(*args)}


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

يستخدم GraphQL كتابة صارمة. دعنا نحدد نموذج بيانات بسيط - كتاب (Book) ومؤلف (Author).

إنشاء فئات البيانات

أنشئ ملف src/main/kotlin/com/example/model/Book.kt:

package com.example.model

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

data class Author( val id: String, val name: String, val nationality: String)

ستقوم مكتبة graphql-kotlin تلقائياً بتوليد أنواع GraphQL بناءً على فئات البيانات هذه. سيصبح كل حقل حقلاً في المخطط.

المحللات للاستعلامات

الآن سننشئ خدمة ستوفر البيانات. أنشئ src/main/kotlin/com/example/service/BookService.kt:

package com.example.service

import com.example.model.Authorimport com.example.model.Bookimport org.springframework.stereotype.Service

@Serviceclass BookService { private val books = mutableListOf( Book("1", "الحرب والسلام", Author("a1", "ليو تولستوي", "روسيا"), 1869), Book("2", "الجريمة والعقاب", Author("a2", "فيودور دوستويفسكي", "روسيا"), 1866), Book("3", "1984", Author("a3", "جورج أورويل", "المملكة المتحدة"), 1949) )

fun getAllBooks(): List<Book> = books fun getBookById(id: String): Book? = books.find { it

المدونات

توصيات الكتب