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 статически проверяет, есть ли они в списке параметров
функции и передаёт их, если они требуются.