GraphQL API مع Swift: دليل تعليمي عملي خطوة بخطوة

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

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

ابدأ الدورة

مقدمة إلى GraphQL وSwift

\n

GraphQL هي لغة استعلام لواجهات API تتيح للعملاء الحصول على البيانات التي يحتاجونها بالضبط دون أي زيادة. لمطوري iOS وmacOS، يفتح دمج GraphQL إمكانيات جديدة لإنشاء تطبيقات جوال فعالة ومرنة. في هذا الدليل التعليمي، سنشرح عمليًا كيفية ربط GraphQL API بمشروع Swift، وتنفيذ الاستعلامات والطفرات الأساسية، بالإضافة إلى معالجة الأخطاء المحتملة.

\n

على عكس REST التقليدي، يتيح GraphQL طلب موارد متعددة في استعلام واحد، وهو أمر مهم بشكل خاص للأجهزة المحمولة ذات حركة المرور المحدودة. سنستخدم المكتبة الشهيرة Apollo iOS - الحل الأكثر استقرارًا وتوثيقًا للعمل مع GraphQL على Swift.

\n\n

تحضير المشروع وتثبيت Apollo iOS

\n

الخطوة 1: إنشاء المشروع وتثبيت التبعيات

\n

افتح Xcode وأنشئ مشروع iOS جديد (أو macOS). للعمل مع GraphQL، سنقوم بتثبيت Apollo iOS عبر Swift Package Manager (SPM).

\n
    \n
  1. في Xcode، اختر File → Add Packages
  2. \n
  3. أدخل رابط المستودع: https://github.com/apollographql/apollo-ios.git
  4. \n
  5. اختر أحدث إصدار مستقر (في وقت الكتابة - 1.15+)
  6. \n
  7. أضف الحزمة إلى هدفك
  8. \n
\n\n

الخطوة 2: توليد الكود بناءً على مخطط GraphQL

\n

يستخدم Apollo iOS توليد الكود: تصف الاستعلامات في ملفات .graphql، وتقوم الأداة بإنشاء كود Swift بنماذج بيانات محددة. للقيام بذلك، يجب:

\n
    \n
  1. إنشاء مجلد GraphQL في المشروع
  2. \n
  3. وضع ملف schema.graphqls (مخطط API الخاص بك) فيه - يمكن الحصول عليه عادةً عبر introspection
  4. \n
  5. إنشاء ملف استعلام، مثل GetUser.graphql:
  6. \n
\n\n
query GetUser($id: ID!) {\n  user(id: $id) {\n    id\n    name\n    email\n    posts {\n      title\n    }\n  }\n}
\n\n

ثم أضف Build Phase لتشغيل مولد الكود. أسهل طريقة هي تثبيت Apollo CLI عبر Homebrew:

\n
brew install apollo-ios-cli
\n\n

ونفذ الأمر في جذر المشروع:

\n
./apollo-ios-cli generate
\n\n

بعد ذلك، ستظهر ملفات Swift المُنشأة مع نماذج البيانات في مجلد Sources/API.

\n\n

تنفيذ استعلامات GraphQL الأساسية

\n

إعداد عميل Apollo

\n

أنشئ مثيلاً لعميل Apollo مع تحديد رابط نقطة نهاية GraphQL الخاصة بك. يتم ذلك عادةً في AppDelegate أو في فئة خدمة منفصلة:

\n\n
import Apollo\n\nclass NetworkService {\n    static let shared = NetworkService()\n    private(set) lazy var apollo: ApolloClient = {\n        let url = URL(string: "https://your-api.com/graphql")!\n        return ApolloClient(url: url)\n    }()\n}
\n\n

استعلام البيانات (Query)

\n

الآن سنقوم بتنفيذ استعلام لجلب مستخدم. سينشئ الكود المُنشأ هيكل GetUserQuery:

\n\n
import Foundation\n\nclass UserViewModel: ObservableObject {\n    @Published var user: User?\n    @Published var errorMessage: String?\n    \n    func fetchUser(id: String) {\n        NetworkService.shared.apollo.fetch(query: GetUserQuery(id: id)) { [weak self] result in\n            DispatchQueue.main.async {\n                switch result {\n                case .success(let graphQLResult):\n                    if let userData = graphQLResult.data?.user {\n                        self?.user = User(\n                            id: userData.id,\n                            name: userData.name,\n                            email: userData.email\n                        )\n                    }\n                case .failure(let error):\n                    self?.errorMessage = "خطأ: \\(error.localizedDescription)"\n                }\n            }\n        }\n    }\n}
\n\n

لاحظ: نستخدم @Published لتحديث واجهة المستخدم بشكل تفاعلي في

المدونات

توصيات الكتب