Comment écrire une API REST en Swift en 30 minutes

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi Swift pour les API REST ?

Swift n'est pas seulement un langage pour les applications mobiles. Grâce à des frameworks comme Vapor et Kitura, vous pouvez créer des API REST complètes pour le côté serveur. C'est particulièrement utile si votre application iOS utilise déjà Swift : vous pouvez écrire à la fois le client et le serveur dans le même langage, réduisant ainsi le temps de développement et simplifiant la maintenance du code.

Dans cet article, nous allons créer une API REST simple en Swift à l'aide du framework Vapor – la solution la plus populaire pour le développement serveur en Swift. Nous configurerons le serveur, ajouterons des routes pour les opérations CRUD et le testerons. L'ensemble du processus ne prendra pas plus de 30 minutes.

Prérequis : macOS ou Linux, Swift 5.8+ (ou plus récent) installé, compréhension de base de HTTP et JSON.



Étape 1 : Installation et configuration du projet Vapor

Vapor fournit un outil CLI pratique pour démarrer rapidement. Installez-le via Homebrew :

brew install vapor

Créez ensuite un nouveau projet :

vapor new MyAPI --template=apicd MyAPI

Le flag --template=api crée une structure minimale pour une API REST. Après la création du projet, ouvrez-le dans Xcode (ou tout autre éditeur) :

open Package.swift

La structure du projet comprend :

  • Sources/App/ — la logique principale (routes, contrôleurs, modèles).
  • Sources/App/routes.swift — l'enregistrement des routes.
  • Sources/App/configure.swift — la configuration de l'application.
  • Package.swift — les dépendances (Vapor est déjà inclus).

Si vous utilisez Xcode, il téléchargera automatiquement les dépendances. Dans le terminal, exécutez vapor build pour compiler.



Étape 2 : Création du modèle de données et de la base

Pour une API REST, nous avons besoin d'un modèle. Créons un modèle simple Task (tâche) avec les champs : id, title, completed. Dans Vapor, les modèles héritent généralement de Model (Fluent ORM).

Créez le fichier Sources/App/Models/Task.swift :

import Fluentimport 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 }}

Créons maintenant une migration pour la table dans la base de données. Créez le fichier 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() }}

Ajoutez la migration dans configure.swift :

app.migrations.add(CreateTask())

Par défaut, Vapor utilise SQLite (un fichier dans le dossier du projet). Si vous voulez PostgreSQL ou MySQL, modifiez les paramètres dans configure.swift, mais pour un démarrage rapide, SQLite est parfait.



Étape 3 : Enregistrement des routes de l'API REST

Créons maintenant un contrôleur pour gérer les requêtes. Créez le fichier Sources/App/Controllers/TaskController.swift :

import Vaporimport 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

Blogs

Book Recommendations