Webserver

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.

rdmd playground.d