Einleitung: Warum REST API auf Swift schnell und modern ist
Die Entwicklung mobiler Anwendungen für iOS und macOS erfordert nicht nur eine schöne Oberfläche, sondern auch ein zuverlässiges Server-Backend. REST API (Representational State Transfer) bleibt der De-facto-Standard für den Datenaustausch zwischen Client und Server. Wenn Sie bereits in Swift für das Apple-Ökosystem schreiben, ist die Erstellung einer API in derselben Sprache ein logischer Schritt. Dies ermöglicht die Wiederverwendung von Datenmodellen, vermeidet Code-Duplikation und ermöglicht schnellere Änderungen.
In diesem Artikel zeigen wir Ihnen, wie Sie eine vollwertige REST API in Swift mit dem Vapor Framework schreiben – dem beliebtesten Web-Framework für Swift. Sie lernen, wie Sie ein Projekt einrichten, Routen erstellen, JSON verarbeiten und den Server starten. Der gesamte Vorgang dauert nicht länger als 30 Minuten. Bereit? Los geht's!
1. Umgebungseinrichtung und Installation von Vapor
Bevor Sie Code schreiben, stellen Sie sicher, dass die erforderlichen Tools installiert sind. Die Arbeit mit Vapor erfordert Swift 5.9 oder neuer (Swift 6 wird empfohlen). Sie benötigen außerdem ein Terminal und einen Code-Editor (Xcode oder VS Code).
Installieren der Vapor Toolbox
Die Vapor Toolbox ist ein Befehlszeilentool, das die Erstellung und Verwaltung von Projekten vereinfacht. Installieren Sie es über Homebrew:
brew install vaporWenn Homebrew nicht installiert ist, laden Sie es von brew.sh herunter. Überprüfen Sie nach der Installation die Version:
vapor --versionErstellen eines neuen Projekts
Öffnen Sie das Terminal und führen Sie den Befehl aus:
vapor new MyAPI --template=apiDas Flag --template=api erstellt eine Grundstruktur für eine REST API ohne unnötige Dateien. Navigieren Sie zum Projektordner:
cd MyAPIÖffnen Sie nun das Projekt in Xcode:
open Package.swiftOder verwenden Sie einen anderen Editor. Fertig! Sie haben eine saubere Vapor-Vorlage.
2. Grundlegende Struktur: Modelle, Controller und Routen
Vapor verwendet die MVC-Architektur (Model-View-Controller), die für die Serverentwicklung angepasst ist. Wir werden eine einfache API zur Verwaltung einer To-Do-Liste erstellen.
Erstellen des Modells
Ein Modell ist eine Struktur, die die Daten beschreibt. Erstellen Sie im Ordner Sources/App/Models/ eine Datei Todo.swift:
import Fluentimport Vapor
final class Todo: Model, Content { static let schema = "todos" @ID(key: .id) var id: UUID? @Field(key: "title") var title: String @Field(key: "is_completed") var isCompleted: Bool init() { } init(id: UUID? = nil, title: String, isCompleted: Bool = false) { self.id = id self.title = title self.isCompleted = isCompleted }}Wir verwenden Fluent – das ORM von Vapor für die Arbeit mit Datenbanken. Das Modell wird dank des Content-Protokolls automatisch in JSON serialisiert.
Erstellen des Controllers
Der Controller enthält die Logik zur Verarbeitung von Anfragen. Erstellen Sie eine Datei Sources/App/Controllers/TodoController.swift:
import Vaporimport Fluent
struct TodoController: RouteCollection { func boot(routes: RoutesBuilder) throws { let todos = routes.grouped("todos") todos.get(use: index) todos.post(use: create) todos.group(":todoID") { todo in todo.delete(use: delete) } } // GET /todos — alle Aufgaben abrufen func index(req: Request) async throws -> [Todo] { try await Todo.query(on: req.db).all() } // POST /todos — eine Aufgabe erstellen func create(req: Request) async throws -> Todo { let todo = try req.content.decode(Todo.self) try await todo.save(on: req.db) return todo } // DELETE /todos/:id — eine Aufgabe löschen func delete(req: R