Mit vibe.d kann man sehr einfach HTTP(S) Webserver erstellen:
auto settings = new HTTPServerSettings;
settings.port = 8080;
listenHTTP(settings, &foo);
Dieser Code startet einen Webserver auf Port 8080,
bei dem alle Anfragen von einer foo Funktion
verarbeitet werden:
void foo(HTTPServerRequest req,
HTTPServerResponse res) { ... }
Um normale Benutzung und Konfiguration von verschiedenen
Pfäden zu erleichtern, wird eine URLRouter Klasse
bereitgestellt, mit der GET, POST, etc. Pfäde
registriert werden können. Hierzu können zum Beispiel
die .get("pfad", handler) oder .post("pfad", handler)
Methoden des URLRouter Objekts verwendet werden.
Alternativ kann eine eigene Web-Interface Klasse
erstellt werden, welche die Serverpfäde als Methoden
implementiert:
auto router = new URLRouter;
router.registerWebInterface(new WebService);
listenHTTP(settings, router);
Alle Pfäde werden in der eigenen WebService Klasse
automatisch mit einem einfachem Schema hergeleitet:
index() verarbeitet Anfragen an /index
getName() verarbeitet GET-Anfragen an /name
postUsername() vearbeitet POST-Anfragen
an /username
Benutzerdefinierte Pfäde können mit einem
@path("/hello/world") Attribut an die
dementsprechende Methode festgelegt werden.
Parameter für Anfragen werden über Funktionsargumente
übergeben. Man kann auch Parameter im Pfad angeben und
diese mit einem Argument, das mit _ anfängt, auslesen:
@path("/my/api/:id")
void foo(int _id)
Bei einem Web-Interface muss man keine HTTPServerResponse oder
HTTPServerRequest Argumente zu den Funktionen angeben. Vibe.d
überprüft jedoch trotzdem, ob man eins angegeben hat und
übergibt die Objekte falls benötigt.