مكتبات GraphQL في Kotlin: نظرة شاملة لمطوري الواجهة الخلفية

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

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

ابدأ الدورة

مكتبة GraphQL في Kotlin: دليل كامل للعمل مع API



GraphQL هي لغة استعلام لواجهات API تتيح للعملاء طلب البيانات التي يحتاجونها فقط. في نظام Kotlin البيئي، توجد عدة مكتبات قوية للعمل مع GraphQL. في هذه المقالة، سنستعرض بالتفصيل ثلاث مكتبات رئيسية: graphql-kotlin، Apollo Kotlin و KGraphQL، مع أمثلة على استخدامها.



1. graphql-kotlin — مكتبة خادم من مجموعة Expedia



graphql-kotlin هي المكتبة الأكثر شيوعًا لإنشاء خوادم GraphQL في Kotlin. تدعم بشكل كامل جميع ميزات مواصفات GraphQL وتتكامل بشكل ممتاز مع أطر العمل Spring Boot و Ktor و Micronaut.



التثبيت والإعداد



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



dependencies {    // المكتبة الأساسية    implementation("com.expediagroup:graphql-kotlin-spring-server:6.5.0")        // لتوليد المخطط من التعليقات التوضيحية    implementation("com.expediagroup:graphql-kotlin-schema-generator:6.5.0")}


إنشاء API GraphQL بسيط



لنحدد نموذج البيانات و resolver للاستعلامات:



// نموذج البياناتdata class User(val id: Int, val name: String, val email: String)

// Query resolverclass UserQuery : Query { fun getUser(id: Int): User? { return users.find { it.id == id } } companion object { val users = listOf( User(1, "آنا بيتروفا", "anna@example.com"), User(2, "إيفان سيدوروف", "ivan@example.com") ) }}

// Mutation resolverclass UserMutation : Mutation { fun createUser(name: String, email: String): User { val newUser = User(users.size + 1, name, email) users.add(newUser) return newUser }}


الآن، سجل resolvers في إعدادات Spring Boot:



@Configurationclass GraphQLConfig {    @Bean    fun userQuery(): UserQuery = UserQuery()        @Bean    fun userMutation(): UserMutation = UserMutation()}


الاستعلامات إلى API



مثال على استعلام GraphQL:



query {  getUser(id: 1) {    name    email  }}


سيحتوي الرد على الحقول المطلوبة فقط:



{  "data": {    "getUser": {      "name": "آنا بيتروفا",      "email": "anna@example.com"    }  }}


2. Apollo Kotlin — مكتبة عميل لنظام Android و JVM



Apollo Kotlin هو عميل GraphQL قوي، مصمم خصيصًا لـ Kotlin و Android. يوفر استعلامات آمنة من حيث النوع وتوليدًا تلقائيًا للكود.



إضافة المكتبة



dependencies {    implementation("com.apollographql.apollo:apollo-runtime:3.8.0")    implementation("com.apollographql.apollo:apollo-normalized-cache-sqlite:3.8.0")}


إنشاء استعلام



أولاً، حدد استعلام GraphQL في ملف GetUserQuery.graphql:



query GetUser($id: Int!) {  getUser(id: $id) {    id    name    email  }}


ثم استخدم الكود المُولّد في Kotlin:



val apolloClient = ApolloClient.builder()    .serverUrl("http://localhost:8080/graphql")    .build()

suspend fun fetchUser(userId: Int): User? { val response = apolloClient .query(GetUserQuery(userId)) .execute() return response.data?.getUser?.let { user -> User( id = user.id, name = user.name, email = user.email ) }}


3. KGraphQL — مكتبة خفيفة الوزن لـ Ktor



KGraphQL هي مكتبة بسيطة لإنشاء خوادم GraphQL في تطبيقات Ktor. إنها

توصيات