Retour et plan
Dans le blogue précèdant, nous avons vu les différentes manières de naviguer entre des vues : NavigationView et NavigationStack. Dans le blogue qui suit, il sera question d’introduire le framework Vapor, le comparer avec Hummingbird et comment l’installer et le faire rouler dans votre machine. Comme dans les blogues précédents, le code produit et la matière vue en lien avec ce blogue sont disponible dans ce dépôt GitHub.
Qu’est-ce que Vapor
Vapor est un framework http Web écrit en Swift libre et source, sous la licence MIT. Il permet principalement de créer des API web et des application Web backend. C’est le framework Swift backend le plus populaire présentement. Présentement, la dernière version, et celle qu’on utilise dans le cadre de ce blogue, est la version 4.0, sortie en 2019, et qui est la plus stable et qui continue à être maintenue jusqu’à aujourd’hui.¹ ² ³
Comparaison avec Hummingbird
Si l’on compare Hummingbird avec Vapor, il est évident que Hummingbird a pour objectif d’être plus léger et minimaliste. Vapor contrairement vise à offrir une approche complète, avec plusieurs dépendances et composants offerts par défaut.⁴ ⁶ Dans ce blogue, on travaillera avec Vapor puisqu’il est plus connu, a selon moi une meilleure documentation, et puisque je ne suis pas assez expérimenté pour moi-même ajouter les dépendances qu’il me faut.
Étapes à suivre pour installer Vapor et créer un projet
- Installer Vapor avec Homebrew
brew install vapor
- Créer un nouveau projet Vapor
vapor new ProduitsVapor
- Ouvrir le projet dans Xcode
open Package.swift
- Rouler le projet
swift run
⁵
Dans le projet, on a le code suivant dans routes.swift :
import Fluent
import Vapor
func routes(_ app: Application) throws {
app.get { req async in
"It works!"
}
app.get("hello") { req async -> String in
"Hello, world!"
}
try app.register(collection: TodoController())
}
On peut donc lancer une requête GET au point d'accès /hello (curl http://localhost:8080/hello
) et on obtiendrait comme retour "Hello, world!" :
On peut aussi modifier la requête GET pour le point d'accès /hello pour lui donner un paramètre nom. On obtient le code suivant :
import Fluent
import Vapor
func routes(_ app: Application) throws {
app.get { req async in
"It works!"
}
app.get("hello") { req async -> String in
"Hello, world!"
}
app.get("hello", ":nom") { req async throws -> String in
let nom = try req.parameters.require("nom")
return "Hello, \(nom.capitalized)!"
}
try app.register(collection: TodoController())
}
On obtient ainsi le résultat suivant avec curl http://localhost:8080/hello/yassine
:
Futur
Dans le prochain blogue, nous essayerons de communiquer avec l’API Rest Vapor que nous venons de créer à partir de l’application mobile SwiftUI créée dans les blogues précédents.
-
« Vapor (web framework) », dans Wikipédia, s.d., https://en.wikipedia.org/wiki/Vapor_(web_framework)
-
Vapor Docs, « Welcome », s.d., https://docs.vapor.codes/
-
Vaporm, « vapor », dans GitHub, s.d., https://github.com/vapor/vapor
-
Adam FOWLER, « Hummingbird: A Swift HTTP server framework », dans Optical Aberration, s.d., https://opticalaberration.com/2021/02/hummingbird.html
-
Swift, « Build a Web Service with Vapor », s.d., https://www.swift.org/getting-started/vapor-web-server/
-
Tibor BÖDECS, « Beginner's guide to server-side Swift using the Hummingbird framework », dans The Swift Dev, 8 mars 2023, https://theswiftdev.com/beginners-guide-to-server-side-swift-using-the-hummingbird-framework/
Commentaires1
Question
Super intéressant! Je voulais savoir si Vapor utilisait le format de données json pour s'échanger les données entre le serveur et le client ou il utilise un format de données moins courant?