Serveur web

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 customisé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.

rdmd playground.d