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

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

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

ابدأ الدورة

مقدمة: لماذا GraphQL و Swift ثنائي مثالي

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

GraphQL يتيح طلب البيانات المطلوبة بالضبط — لا أكثر ولا أقل. بالنسبة لـ Swift، هذا يعني تقليل حركة المرور، تسريع الأداء، وتبسيط الكود. سنمر بالمسار الكامل: من إعداد المشروع إلى تنفيذ الاستعلامات والتحورات المعقدة.



1. إعداد المشروع وتثبيت Apollo iOS

الخطوة الأولى — تجهيز مشروع Xcode وتثبيت التبعيات. الطريقة الأكثر ملاءمة هي عبر Swift Package Manager.



1.1 إنشاء مشروع جديد

افتح Xcode وأنشئ مشروعاً جديداً (تطبيق iOS أو تطبيق macOS). اختر SwiftUI أو UIKit — ليس مهماً. سمِّه GraphQLDemo.



1.2 إضافة Apollo iOS عبر SPM

  1. في Xcode، انتقل إلى: File → Add Package Dependencies...
  2. أدخل رابط المستودع: https://github.com/apollographql/apollo-ios.git
  3. اختر أحدث إصدار مستقر واضغط Add Package.
  4. تأكد من إضافة الحزمة إلى هدف تطبيقك.


1.3 توليد كود المخطط

Apollo iOS يستخدم توليد الكود. لهذا نحتاج إلى ملف المخطط .graphqls (يُحمَّل عادة من الخادم) وملفات الاستعلامات .graphql.

// هيكل المشروع:// GraphQLDemo/// ├── GraphQL/// │   ├── schema.graphqls      // مخطط الخادم// │   ├── Queries.graphql      // الاستعلامات// │   └── Mutations.graphql    // التحورات

بعد إضافة الملفات، شغِّل توليد الكود عبر الطرفية:

cd /path/to/project./Pods/Apollo/apollo-ios-cli --download-schema --endpoint=https://your-server/graphql./Pods/Apollo/apollo-ios-cli --generate

الآن لديك ملفات Swift مُولَّدة تحتوي على الأنواع والاستعلامات.



2. استعلام أساسي (Query) في Swift

سنشرح أبسط استعلام لجلب قائمة المستخدمين. لنفترض أن مخططنا يحتوي على نوع User مع الحقول id، name، email.



2.1 إنشاء ملف .graphql

في مجلد GraphQL، أنشئ ملفاً باسم Queries.graphql:

query GetUsers {  users {    id    name    email  }}


2.2 تنفيذ الاستعلام في Swift

أولاً، قم بتهيئة عميل Apollo:

import Apollo

class NetworkManager { static let shared = NetworkManager() let apollo: ApolloClient private init() { let url = URL(string: "https://your-server/graphql")! apollo = ApolloClient(url: url) }}

الآن نفذ الاستعلام في أي ViewController أو ViewModel:

import SwiftUI

struct UsersView: View { @State private var users: [GetUsersQuery.Data.User] = [] var body: some View { List(users, id: \\.id) { user in VStack(alignment: .leading) { Text(user.name) .font(.headline) Text(user.email) .font(.subheadline) .foregroundColor(.gray) } } .onAppear { loadUsers() } } private func loadUsers() { NetworkManager.shared.apollo.fetch(query: GetUsersQuery()) { result in switch result { case .success(let graphQLResult): if let usersData = graphQLResult.data?.users { self.users = usersData } case .failure(let error): print("خطأ: \\(error.localizedDescri")

المدونات

توصيات الكتب