Vibe.d permite escribir servidores web HTTP(S) en muy poco tiempo:
auto settings = new HTTPServerSettings;
settings.port = 8080;
listenHTTP(settings, &foo);
Este código inicia un servidor web en el puerto 8080 donde todas las peticiones
son gestionadas por la función foo:
void foo(HTTPServerRequest req,
HTTPServerResponse res) { ... }
Para facilitar el uso típico y la configuración de diferentes rutas se
proporciona la clase URLRouter, que permite registrar funciones miembro para
gestionar las peticiones GET, POST, etc. de la forma .get("path", handler),
.post("path", handler), etc. Además, también permite registrar una clase
personalizada para gestionar la interfaz web implementando las rutas de las
URL como funciones miembro:
auto router = new URLRouter;
router.registerWebInterface(new WebService);
listenHTTP(settings, router);
Las funciones de la clase WebService que se ejecutarán según las rutas
introducidas se deducen según un esquema muy simple:
index() gestionará las peticiones a /index.
getName() gestionará las peticiones GET a la ruta /name.
postUsername() gestionará las peticiones POST a la ruta /username.
Además se pueden asignar rutas personalizadas a funciones mediante el atributo
@path("/hola/mundo"). Los parámetros de las peticiones POST están
disponibles dentro de la función en nombres de variables con el prefijo _.
Incluso es posible especificar parámetros directamente en la ruta:
@path("/my/api/:id")
void foo(int _id)
No se necesita pasar las clases HTTPServerResponse ni HTTPServerRequest
como parámetro a cada función. Vibe.d comprueba de forma estática si estos
parámetros están en la lista de parámetros de la función y las pasa si se
necesitan.