عميل HTTP لـ Kotlin: أفضل المكتبات للعمل مع الشبكة

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

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

ابدأ الدورة

عميل HTTP لـ Kotlin: مراجعة أفضل المكتبات للعمل مع الشبكة



Kotlin هي لغة حديثة تُستخدم بنشاط في تطوير تطبيقات Android والحلول الخادمية (Ktor, Spring Boot). العمل مع طلبات HTTP هي إحدى المهام الرئيسية لأي تطبيق. في هذه المقالة، سنستعرض أفضل المكتبات لتنفيذ طلبات HTTP في Kotlin، وميزاتها، وأمثلة استخدامها، ونساعدك في اختيار الأداة المناسبة لمشروعك.



1. Ktor Client — العميل الأصلي لـ Kotlin



Ktor Client هو عميل HTTP الرسمي من JetBrains، المصمم خصيصًا لنظام Kotlin البيئي. وهو غير متزامن بالكامل، ويدعم coroutines والتعددية المنصات (JVM, Android, iOS, JS, Native).



  • المزايا: دعم أصلي لـ coroutines، بنية مرنة للإضافات (تسجيل، تسلسل)، تعددية المنصات.
  • العيوب: يتطلب كودًا إضافيًا (boilerplate) للطلبات البسيطة مقارنة بـ OkHttp.


مثال لطلب GET:

import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*

suspend fun fetchData(): String { val client = HttpClient() val response: HttpResponse = client.get("https://api.example.com/data") return response.bodyAsText()}


لتسلسل JSON، غالبًا ما يُستخدم الإضافة ktor-serialization-kotlinx-json.



2. OkHttp — المعيار المُختبر عبر الزمن



OkHttp من Square هي واحدة من أشهر المكتبات لـ Android و JVM. وهي فعالة، وتدعم HTTP/2، وإعادة استخدام الاتصالات، والتخزين المؤقت، والمعترضات (interceptors).



  • المزايا: أداء عالٍ، مجتمع ضخم، توافق مع Retrofit، دعم WebSocket.
  • العيوب: لا يوجد دعم أصلي لـ coroutines (يتطلب غلافًا)، غير متعددة المنصات.


مثال مع coroutines (عبر suspend):

import okhttp3.*import kotlinx.coroutines.Dispatchersimport kotlinx.coroutines.withContext

suspend fun fetchUrl(url: String): String = withContext(Dispatchers.IO) { val client = OkHttpClient() val request = Request.Builder().url(url).build() client.newCall(request).execute().body?.string() ?: ""}


غالبًا ما يُستخدم OkHttp كمحرك لـ Retrofit.



3. Retrofit — عميل HTTP مُنمّط



Retrofit هو طبقة فوق OkHttp، تقوم تلقائيًا بتحويل استجابات HTTP إلى كائنات Kotlin (عبر Moshi أو Gson أو Kotlinx Serialization). مثالي لواجهات REST API.



  • المزايا: بناء جملة تصريحي، تسلسل تلقائي، دعم coroutines (عبر suspend)، محولات لأنواع بيانات مختلفة.
  • العيوب: اعتماد على OkHttp، إعداد أكثر تعقيدًا للطلبات غير القياسية.


مثال لواجهة واستدعاء:

import retrofit2.http.GETimport retrofit2.http.Path

interface ApiService { @GET("users/{id}") suspend fun getUser(@Path("id") id: Int): User}

// الاستخدام:val user = apiService.getUser(42)


يدعم Retrofit التعددية المنصات عبر Kotlin Multiplatform (من الإصدار 2.9.0).



4. Fuel — عميل Kotlin خفيف الوزن



Fuel هي مكتبة بسيطة، مكتوبة بلغة Kotlin النقية بدون اعتماديات على مكتبات Java. تركز على البساطة والأسلوب الوظيفي.



  • المزايا: واجهة برمجة تطبيقات بسيطة جدًا، دعم مدمج لـ coroutines، وزن خفيف، مناسبة للمشاريع الصغيرة.
  • العيوب: إمكانيات أقل من OkHttp، مجتمع أصغر، غير موصى بها للحلول المؤسسية المعقدة.


مثال لطلب GET:

import fuel.httpGetimport fuel.core.Fuel

suspen

توصيات