Ktor لكوتلن: دليل شامل مع أمثلة

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

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

ابدأ الدورة

ما هو Ktor ولماذا تحتاجه؟

\n\n

Ktor هو إطار عمل ويب غير متزامن (asynchronous)، مكتوب بلغة Kotlin بواسطة شركة JetBrains (مبتكري IntelliJ IDEA و Kotlin نفسه). وهو مصمم لإنشاء تطبيقات الخادم، وعملاء HTTP، والخدمات المصغرة (microservices) باستخدام إمكانيات coroutines في Kotlin. Ktor مبني بالكامل على coroutines، مما يجعله غير محظور (non-blocking)، خفيف الوزن، وعالي الأداء بشكل لا يصدق.

\n\n

لماذا تستخدم Ktor؟ أولاً، هو إطار عمل أصلي لـ Kotlin يتكامل بشكل مثالي مع النظام البيئي للغة. ثانيًا، Ktor معياري: يمكنك توصيل المكونات التي تحتاجها فقط (التوجيه، التسلسل، المصادقة، WebSockets، إلخ). ثالثًا، يدعم تعدد المنصات: يمكن لنفس كود العميل العمل على JVM و Android و iOS و JavaScript. Ktor مثالي لإنشاء REST API والخدمات المصغرة، وكذلك لكتابة عملاء HTTP يمكنهم العمل على أي منصة.

\n\n

تثبيت Ktor

\n\n

Ktor ليس مكتبة واحدة، بل مجموعة من تبعيات Gradle. يتم التثبيت من خلال نظام بناء Gradle (أو Maven). للبدء، قم بإنشاء مشروع Kotlin جديد وأضف التبعيات التالية في ملف build.gradle.kts:

\n\n
// build.gradle.kts\nval ktorVersion = "2.3.12" // الإصدار الحالي وقت الكتابة\n\nplugins {\n    kotlin("jvm") version "1.9.22"\n    application\n}\n\ndependencies {\n    // خادم Ktor\n    implementation("io.ktor:ktor-server-core:$ktorVersion")\n    implementation("io.ktor:ktor-server-netty:$ktorVersion") // محرك Netty\n    implementation("io.ktor:ktor-server-content-negotiation:$ktorVersion") // من أجل JSON\n    implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion") // تسلسل JSON\n\n    // عميل Ktor (إذا لزم الأمر)\n    implementation("io.ktor:ktor-client-core:$ktorVersion")\n    implementation("io.ktor:ktor-client-cio:$ktorVersion") // محرك CIO\n    implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")\n\n    // تسجيل (Logging)\n    implementation("ch.qos.logback:logback-classic:1.4.14")\n}\n\napplication {\n    mainClass.set("ApplicationKt") // نقطة الدخول\n}
\n\n

بعد ذلك، قم بتنفيذ الأمر ./gradlew build لتحميل التبعيات. إذا كنت تستخدم Maven، يمكن العثور على تبعيات مماثلة على الموقع الرسمي لـ Ktor. للبدء السريع، يمكنك أيضًا استخدام منشئ المشاريع على start.ktor.io.

\n\n

بداية سريعة مع مثال كود

\n\n

لنقم بإنشاء خادم HTTP بسيط يستجيب بـ "Hello, World!" لطلب GET إلى المسار الجذر.

\n\n
import io.ktor.server.application.*\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.response.*\nimport io.ktor.server.routing.*\n\nfun main() {\n    embeddedServer(Netty, port = 8080) {\n        routing {\n            get("/") {\n                call.respondText("Hello, World!")\n            }\n        }\n    }.start(wait = true)\n}
\n\n

قم بتشغيل هذا الكود. الآن افتح المتصفح وانتقل إلى العنوان http://localhost:8080. سترى النص "Hello, World!". تهانينا، تم تشغيل أول خادم Ktor لك!

\n\n

الأساليب والوظائف الأساسية في Ktor

\n\n

فيما يلي 10 من الأساليب/الوظائف الرئيسية في Ktor التي ستستخدمها بشكل متكرر.

\n\n

1. embeddedServer

\n

ما يفعله: ينشئ ويشغل خادم HTTP مدمج. هذه هي نقطة الدخول الرئيسية لأي تطبيق Ktor.

\n

المعلمات:

\n
    \n
  • engine — محرك الخادم (Netty, CIO, Jetty, Tomcat).
  • \n
  • port — المنفذ للاستماع (الافتراضي 80).
  • \n
  • host — المضيف (الافتراضي 0.0.0.0).
  • \n
  • module — دالة لامدا يتم فيها تكوين التطبيق (المسارات، الإضافات).
  • \n
\n

مثال:

\n
embeddedS                    

توصيات