كيفية كتابة REST API بلغة Kotlin في 30 دقيقة: دليل خطوة بخطوة

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

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

ابدأ الدورة

مقدمة

Kotlin هي لغة برمجة حديثة وموجزة وآمنة تكتسب شعبية في تطوير تطبيقات الخادم. بفضل توافقها مع Java وأطر العمل القوية مثل Ktor، يمكنك إنشاء REST API متكامل في غضون نصف ساعة. في هذه المقالة، سنوضح كيفية كتابة REST API باستخدام Kotlin وإطار العمل Ktor، حتى لو كنت مبتدئًا.

سنقوم بإنشاء تطبيق بسيط لإدارة قائمة المهام (Todo API) مع دعم عمليات CRUD: الإنشاء والقراءة والتحديث والحذف. ستستغرق العملية بأكملها 30 دقيقة كحد أقصى إذا اتبعت التعليمات.



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

للبدء، ستحتاج إلى IntelliJ IDEA (Community Edition) و Gradle. سنقوم بإنشاء مشروع Kotlin جديد مع دعم Ktor.



الخطوة 1: إنشاء مشروع Gradle

افتح IntelliJ IDEA وأنشئ مشروعًا جديدًا: File → New → Project. اختر Gradle وحدد اللغة Kotlin. اضغط على Finish.



الخطوة 2: إضافة تبعيات Ktor

افتح ملف build.gradle.kts وأضف التبعيات التالية:



plugins {    kotlin("jvm") version "1.9.0"    application}

repositories { mavenCentral()}

dependencies { implementation("io.ktor:ktor-server-core:2.3.0") implementation("io.ktor:ktor-server-netty:2.3.0") implementation("io.ktor:ktor-server-content-negotiation:2.3.0") implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.0") implementation("ch.qos.logback:logback-classic:1.4.11")}

application { mainClass.set("ApplicationKt")}


اضغط على زر Sync Now في الزاوية اليمنى العليا لتحميل التبعيات.



2. إنشاء نموذج البيانات والخدمة

قبل كتابة المسارات، سنحدد نموذج البيانات لمهمتنا وخدمة بسيطة لتخزين البيانات في الذاكرة.



نموذج TodoItem

أنشئ ملف TodoItem.kt في مجلد src/main/kotlin:



import kotlinx.serialization.Serializable

@Serializabledata class TodoItem( val id: Int, val title: String, val completed: Boolean = false)


خدمة TodoService

أنشئ ملف TodoService.kt:



import java.util.concurrent.atomic.AtomicInteger

class TodoService { private val items = mutableListOf<TodoItem>() private val idCounter = AtomicInteger(1)

fun getAll(): List<TodoItem> = items.toList()

fun getById(id: Int): TodoItem? = items.find { it.id == id }

fun create(title: String): TodoItem { val newItem = TodoItem(id = idCounter.getAndIncrement(), title = title) items.add(newItem) return newItem }

fun update(id: Int, title: String?, completed: Boolean?): TodoItem? { val index = items.indexOfFirst { it.id == id } if (index == -1) return null val current = items[index] val updated = current.copy( title = title ?: current.title, completed = completed ?: current.completed ) items[index] = updated return updated }

fun delete(id: Int): Boolean = items.removeAll { it.id == id }}


3. إعداد الخادم والمسارات

الآن سنقوم بإنشاء ملف التطبيق الرئيسي Application.kt وتحديد مسارات REST API.



import io.ktor.server.application.*import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.routing.*import io.ktor.server.response.*import io.ktor.server.request.*import io.ktor.serialization.kotlinx.json.*import io.ktor.server.plugins.contentnegotiation.*

fun main() { embeddedServer(Netty, port = 8080, host = "0.0.0.0") { configureSerialization() configureRouting() }.start(wait = true)}

fun

المدونات

توصيات الكتب