Menu

Веб-сервер

Vibe.d позволяет создавать HTTP(S) веб-серверы практически мгновенно:

auto settings = new HTTPServerSettings;
settings.port = 8080;
listenHTTP(settings, &foo);

Этот код запускает веб-сервер на порту 8080, все запросы обрабатываются функцией foo:

void foo(HTTPServerRequest req,
    HTTPServerResponse res) { ... }

Для упрощения типичного использования и конфигурации различных путей предоставляется класс URLRouter, который позволяет регистрировать обработчики GET, POST и т.п. либо посредством функций-членов .get("path", handler) и .post("path", handler), либо посредством регистрации пользовательского класса, реализующего пути в виде функций-членов:

auto router = new URLRouter;
router.registerWebInterface(new WebService);
listenHTTP(settings, router);

Пути для вызова соответствующих функций пользовательского класса WebService определяются по следующей простой схеме:

  • index() обрабатывает /index
  • getName() обрабатывает GET-запрос /name
  • postUsername() обрабатывает POST-запрос /username

Пользовательские пути можно назначить, указав для функции члена атрибут @path("/hello/world"). Параметры POST-запросов передаются в виде переменных, имя которых имеет префикс _. Также возможно указать параметры непосредственно в пути:

@path("/my/api/:id")
void foo(int _id)

Нет необходимости вручную передавать объекты HTTPServerResponse и HTTPServerRequest в виде параметров каждой функции. Vibe.d статически проверяет, есть ли они в списке параметров функции и передаёт их, если они требуются.

rdmd playground.d