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.