كيفية كتابة REST API بلغة Swift في 30 دقيقة

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

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

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

مقدمة: لماذا Swift لواجهات REST API؟

Swift ليس مجرد لغة لتطبيقات الهاتف المحمول. بفضل الأطر مثل Vapor و Kitura، يمكنك إنشاء واجهات REST API كاملة للجانب الخادم. هذا مفيد بشكل خاص إذا كان تطبيق iOS الخاص بك يستخدم Swift بالفعل: يمكنك كتابة كل من العميل والخادم بلغة واحدة، مما يقلل وقت التطوير ويبسط صيانة الكود.

في هذه المقالة، سنقوم بإنشاء REST API بسيط باستخدام Swift مع إطار العمل Vapor - الحل الأكثر شيوعًا لتطوير الخادم بلغة Swift. سنقوم بإعداد الخادم، وإضافة مسارات لعمليات CRUD، واختباره. العملية بأكملها ستستغرق 30 دقيقة كحد أقصى.

المتطلبات: macOS أو Linux، تثبيت Swift 5.8+ (أو أحدث)، فهم أساسي لـ HTTP و JSON.

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

يوفر Vapor أداة CLI مريحة للبدء السريع. قم بتثبيتها عبر Homebrew:

brew install vapor

ثم قم بإنشاء مشروع جديد:

vapor new MyAPI --template=api
cd MyAPI

العلامة --template=api تنشئ هيكلًا أوليًا ببنية دنيا لـ REST API. بعد إنشاء المشروع، افتحه في Xcode (أو أي محرر):

open Package.swift

يتضمن هيكل المشروع:

  • Sources/App/ — المنطق الرئيسي (المسارات، وحدات التحكم، النماذج).
  • Sources/App/routes.swift — تسجيل المسارات.
  • Sources/App/configure.swift — إعدادات التطبيق.
  • Package.swift — التبعيات (Vapor مضمن بالفعل).

إذا كنت تستخدم Xcode، فسيقوم تلقائيًا بتحميل التبعيات. في الطرفية، نفذ vapor build للبناء.

الخطوة 2: إنشاء نموذج البيانات وقاعدة البيانات

لـ REST API نحتاج إلى نموذج. لننشئ نموذجًا بسيطًا Task (مهمة) مع الحقول: id, title, completed. في Vapor، ترث النماذج عادةً من Model (Fluent ORM).

أنشئ ملفًا Sources/App/Models/Task.swift:

import Fluent
import Vapor

final class Task: Model, Content {
    static let schema = "tasks"

    @ID(key: .id)
    var id: UUID?

    @Field(key: "title")
    var title: String

    @Field(key: "completed")
    var completed: Bool

    init() {}

    init(id: UUID? = nil, title: String, completed: Bool = false) {
        self.id = id
        self.title = title
        self.completed = completed
    }
}

الآن لننشئ ترحيلًا للجدول في قاعدة البيانات. أنشئ ملفًا Sources/App/Migrations/CreateTask.swift:

import Fluent

struct CreateTask: Migration {
    func prepare(on database: Database) -> EventLoopFuture<Void> {
        database.schema("tasks")
            .id()
            .field("title", .string, .required)
            .field("completed", .bool, .required)
            .create()
    }

    func revert(on database: Database) -> EventLoopFuture<Void> {
        database.schema("tasks").delete()
    }
}

أضف الترحيل إلى configure.swift:

app.migrations.add(CreateTask())

افتراضيًا، يستخدم Vapor SQLite (ملف في مجلد المشروع). إذا كنت تريد PostgreSQL أو MySQL - قم بتغيير الإعدادات في configure.swift، ولكن للبدء السريع، SQLite مناسب تمامًا.

الخطوة 3: تسجيل مسارات REST API

الآن لننشئ وحدة تحكم لمعالجة الطلبات. أنشئ ملفًا Sources/App/Controllers/TaskController.swift:

import Vapor
import Fluent

struct TaskController: RouteCollection {
    func boot(routes: RoutesBuilder) throws {
        let tasks = routes.grouped("tasks")

        tasks.get(use: index)        // GET /tasks
        tasks.post(use: create)      // POST /tasks
        tasks.grou
```                

المدونات

توصيات الكتب