Ktor Client — عميل HTTP للغة Kotlin

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

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

ابدأ الدورة
```html

ما هو Ktor Client؟

Ktor Client هو عميل HTTP غير متزامن (asynchronous) للغة البرمجة Kotlin، تم تطويره بواسطة شركة JetBrains. وهو جزء من إطار العمل Ktor، المصمم لبناء تطبيقات الخادم والعميل. يتيح Ktor Client إرسال طلبات HTTP (GET, POST, PUT, DELETE وغيرها) ومعالجة الردود، مع دعم العمل مع محركات مختلفة (OkHttp, Apache, CIO, Android، إلخ).

لماذا نحتاج Ktor Client؟

يُستخدم Ktor Client للتفاعل مع REST API، وتحميل البيانات من الإنترنت، وإرسال النماذج، والعمل مع WebSocket، وكذلك للتكامل مع الخدمات السحابية. وهو مكتوب بالكامل بلغة Kotlin، مما يضمن أمان الأنواع (type safety) وإيجاز الكود. بفضل دعم coroutines و Flow، يُعد Ktor Client مثالياً للتطبيقات غير المتزامنة والتفاعلية (reactive).

كيفية تثبيت Ktor Client؟

لاستخدام Ktor Client في مشروع Kotlin، أضف التبعيات (dependencies) إلى ملف build.gradle.kts:

dependencies {    implementation("io.ktor:ktor-client-core:2.3.12")    implementation("io.ktor:ktor-client-cio:2.3.12") // محرك CIO    implementation("io.ktor:ktor-client-content-negotiation:2.3.12") // لـ JSON    implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.12") // التسلسل (serialization)}

إذا كنت تستخدم Maven، أضف التبعيات المقابلة في ملف pom.xml.

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

  • محركات متعددة: OkHttp, Apache, CIO, Android, iOS (Darwin), JavaScript.
  • غير متزامن: دعم كامل لـ coroutines في Kotlin (دوال suspend).
  • إضافات (Plugins): Content Negotiation (JSON/XML)، Logging، Auth (Basic, Bearer, OAuth)، Cookies، WebSocket.
  • أمان الأنواع: التسلسل وإلغاء التسلسل عبر kotlinx.serialization.
  • نقل البيانات (Streaming): العمل مع الملفات الكبيرة من خلال streaming.

مثال كود بلغة Kotlin

import io.ktor.client.*import io.ktor.client.engine.cio.*import io.ktor.client.request.*import io.ktor.client.statement.*import io.ktor.http.*import kotlinx.serialization.Serializableimport io.ktor.client.plugins.contentnegotiation.*import io.ktor.serialization.kotlinx.json.*

@Serializabledata class Post(val userId: Int, val id: Int, val title: String, val body: String)

suspend fun fetchPost(): Post { val client = HttpClient(CIO) { install(ContentNegotiation) { json() } } val response: HttpResponse = client.get("https://jsonplaceholder.typicode.com/posts/1") val post: Post = response.body() client.close() return post}

fun main() = runBlocking { val post = fetchPost() println("Title: ${post.title}")}

متى نستخدم Ktor Client؟

يُوصى باستخدام Ktor Client في مشاريع Kotlin (JVM, Android, Native, JS) التي تتطلب عميل HTTP خفيف الوزن، وغير متزامن، وحديث. إنه مفيد بشكل خاص في الخدمات المصغرة (microservices)، وتطبيقات Android، والمشاريع متعددة المنصات (KMP)، وعند العمل مع Kotlin Coroutines. إذا كنت بحاجة إلى تكامل كامل مع النظام البيئي لـ Kotlin و JetBrains، فإن Ktor Client هو الخيار الأفضل.

```

توصيات