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.