كيفية كتابة REST API بلغة Kotlin في 30 دقيقة: للمبتدئين

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

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

ابدأ الدورة

مقدمة

Kotlin هي لغة برمجة حديثة ثابتة الأنواع تعمل على الآلة الافتراضية لجافا (JVM) ومتوافقة تمامًا مع نظام جافا البيئي. بفضل إيجازها وأمانها وإمكانياتها الوظيفية القوية، أصبحت Kotlin واحدة من أكثر اللغات شيوعًا لتطوير تطبيقات الخادم، خاصة بعد أن اختارتها Google كلغة رئيسية لنظام Android.

في هذه المقالة، سنقوم بإنشاء REST API كامل بلغة Kotlin باستخدام إطار العمل خفيف الوزن Ktor ومكتبة التعامل مع قواعد البيانات Exposed. سنقوم بتنفيذ خدمة بسيطة لإدارة المهام (قائمة المهام) مع دعم جميع عمليات CRUD (إنشاء، قراءة، تحديث، حذف). ستستغرق العملية بأكملها أقل من 30 دقيقة إذا كنت قد قمت بالفعل بتثبيت IntelliJ IDEA و JDK.



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

للبدء، سنقوم بإنشاء مشروع Kotlin جديد مع دعم Gradle. افتح IntelliJ IDEA واختر File → New → Project. في معالج إنشاء المشروع، اختر Kotlin → JVM.

الخطوة 1.1: هيكل build.gradle.kts

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

plugins {    kotlin("jvm") version "1.9.0"    id("io.ktor.plugin") version "2.3.0"    kotlin("plugin.serialization") version "1.9.0"}

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("org.jetbrains.exposed:exposed-core:0.41.1") implementation("org.jetbrains.exposed:exposed-dao:0.41.1") implementation("org.jetbrains.exposed:exposed-jdbc:0.41.1") implementation("com.h2database:h2:2.1.214") implementation("ch.qos.logback:logback-classic:1.4.7")}

تتضمن هذه التبعيات: إطار العمل Ktor نفسه، ودعم تسلسل JSON، ومكتبة Exposed للتعامل مع قاعدة البيانات، وقاعدة البيانات المضمنة H2 للاختبار.



الخطوة 1.2: نقطة الدخول

أنشئ ملف Application.kt في الحزمة com.example:

import io.ktor.server.engine.*import io.ktor.server.netty.*import com.example.plugins.*

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


2. إعداد التسلسل والتوجيه

الخطوة 2.1: إضافات التطبيق

أنشئ دليلاً باسم plugins وملف Serialization.kt:

package com.example.plugins

import io.ktor.serialization.kotlinx.json.*import io.ktor.server.application.*import io.ktor.server.plugins.contentnegotiation.*

fun Application.configureSerialization() { install(ContentNegotiation) { json() }}


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

أنشئ ملف Models.kt:

package com.example.models

import kotlinx.serialization.Serializable

@Serializabledata class Task( val id: Int = 0, val title: String, val description: String = "", val completed: Boolean = false)


3. العمل مع قاعدة البيانات

الخطوة 3.1: إعداد الاتصال

أنشئ ملف DatabaseFactory.kt:

package com.example.database

import org.jetbrains.exposed.sql.Databaseimport org.jetbrains.exposed.sql.SchemaUtilsimport org.jetbrains.exposed.sql.transactions.transaction

object DatabaseFactory { fun init() { Database.connect("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", driver = "org.h2.Driver") transaction { SchemaUtils.create(TasksTable) } }}


الخطوة 3.2: تعريف الجدول

في نفس الحزمة، أنشئ TasksTable.kt:

package co                

المدونات

توصيات الكتب