vibe.d permet d'écrire des serveurs web HTTP(S) très rapidement:
auto settings = new HTTPServerSettings;
settings.port = 8080;
listenHTTP(settings, &foo);
On démarre ainsi un serveur web sur le porte 8080, et toutes les requêtes seront gérées par la fonction foo
:
void foo(HTTPServerRequest req,
HTTPServerResponse res) { ... }
Pour faciliter les cas d'utilisation typiques et la configurations des différents chemins d'accès, une classe URLRouter
est fournie, qui permet de connecter des fonctions pour gérer des requêtes GET
, POST
, etc ... On utilise pour celà les méthodes .get("chemin", fonction)
ou `.post("chemin", fonction), ou on connecte une classe d'interface web qui implémente les chemins du serveur web en tant que méthodes:
auto router = new URLRouter;
router.regiserWebInterface(new WebService);
listenHTTP(settings, router);
Les chemins de l'interface web personnalisée WebService
seront automatiquement déduits à partir des méthodes de la classe, selon un mécanisme simple:
index()
gérera /
getName()
gérera la requête GET
sur /name
postUsername()
gérera la requête POST
sur /username
Des chemins personnalisés peuvent être créés en associant un attribut @path("/hello/world")
à une méthode. Les paramètres des requêtes POST
peuvent être rendus accessibles dans la fonction en utilisant des paramètres avec le préfixe _
. Il est aussi possible de spécifier les paramètres dans le chemin en lui-même:
@path("/my/api/:id")
void foo(int _id)
Il n'est pas nécessaire de passer un HTTPServerResponse
et un HTTPServerRequest
en paramètre à chaque fonction. vibe.d vérifie statiquement la liste des paramètres des fonctions et les passe si nécessaire.