So schreiben Sie eine REST API in Swift in 30 Minuten: Für Anfänger
Swift ist nicht nur eine Sprache für die Entwicklung mobiler Apps unter iOS und macOS. Mit dem Framework Vapor ist die Entwicklung von Serveranwendungen in Swift zugänglich und bequem geworden. In diesem Artikel zeigen wir Ihnen, wie Sie in nur 30 Minuten eine einfache REST API in Swift schreiben. Sie lernen die grundlegenden Prinzipien der Arbeit mit Vapor kennen, erstellen Routen, verarbeiten Anfragen und geben JSON-Antworten zurück.
Dieser Leitfaden ist ideal für Anfänger, die bereits die Grundlagen von Swift kennen, aber noch nie Servercode geschrieben haben. Wir gehen den Prozess Schritt für Schritt mit Codebeispielen und Erklärungen durch.
Was ist eine REST API und wozu braucht man sie?
REST (Representational State Transfer) ist ein Architekturstil für die Interaktion von Komponenten einer verteilten Anwendung im Netzwerk. Eine REST API ermöglicht es Client-Anwendungen (z. B. einer iOS-App), Daten über HTTP-Anfragen an einen Server zu senden und von diesem zu empfangen.
Die wichtigsten HTTP-Methoden, die in REST verwendet werden:
- GET – Daten abrufen
- POST – eine neue Ressource erstellen
- PUT – eine vorhandene Ressource aktualisieren
- DELETE – eine Ressource löschen
Für unser Beispiel erstellen wir eine einfache API zur Verwaltung einer Aufgabenliste (Todo List). Sie unterstützt alle vier grundlegenden CRUD-Operationen (Create, Read, Update, Delete).
Installation von Vapor und Erstellung des Projekts
Vapor ist das beliebteste Web-Framework für Swift. Installieren Sie zunächst das Vapor Toolbox über Homebrew:
brew install vaporErstellen Sie nach der Installation ein neues Projekt:
vapor new TodoAPIcd TodoAPIDieser Befehl erstellt eine Projektstruktur mit einem bereits konfigurierten Server. Öffnen Sie das Projekt in Xcode:
open Package.swiftIn Xcode sehen Sie die Standardstruktur eines Vapor-Projekts. Der Hauptcode befindet sich im Ordner Sources/App.
Erstellung des Datenmodells
Für die Arbeit mit Aufgaben benötigen wir ein Modell. Erstellen Sie eine Datei Todo.swift im Ordner Sources/App/Models:
import Vaporimport Fluent
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 – ein ORM für Swift, das mit Datenbanken arbeitet. In unserem Beispiel verwenden wir der Einfachheit halber SQLite. Beachten Sie das Protokoll Content – es ermöglicht die automatische Kodierung/Dekodierung des Modells in JSON.
Konfiguration der Migration und der Datenbank
Jetzt erstellen wir eine Migration für unser Modell. Fügen Sie eine Datei CreateTodo.swift im Ordner Sources/App/Migrations hinzu:
import Fluent
struct CreateTodo: Migration { func prepare(on database: Database) -> EventLoopFuture<Void> { return database.schema("todos") .id() .field("title", .string, .required) .field("is_completed", .bool, .required) .create() } func revert(on database: Database) -> EventLoopFuture<Void> { return database.schema("todos").delete() }}Fügen Sie in der Datei configure.swift die Registrierung der Datenbank und der Migration hinzu:
import Fluentimport FluentSQLiteDriver
public func configure(_ app: Application) throws { app.databases.use(.sqlite(.file("db.sqlite")), as: .sqlite) app.migrations.add(CreateTodo())