Создание веб-форм с использованием Vibe.d

Создание веб-форм с использованием Vibe.d

Веб-приложения часто требуют взаимодействия с пользователем через формы для сбора данных. В этом руководстве мы рассмотрим, как использовать библиотеку Vibe.d на языке программирования D для создания и обработки веб-форм с методами GET и POST.

Установка и настройка проекта

Для начала создадим новый проект на D. Если у вас еще не установлен D, вы можете установить его, следуя инструкциям на официальном сайте.

После установки создадим новый проект:

dub init my_vibed_project
cd my_vibed_project

Добавим Vibe.d в зависимости в файл dub.json:

"dependencies": {
    "vibe-d": "~>0.9.0"
}

Теперь мы готовы к написанию кода.

Основы Vibe.d

Основной сервер

Создадим файл app.d и настроим оснвоной сервер:

import vibe.vibe;

void main()
{
    auto settings = new HTTPServerSettings;
    settings.port = 8080;
    listenHTTP(settings, &router);

    logInfo("Server is running at http://127.0.0.1:8080");
    runApplication();
}

void router(HTTPServerRequest req, HTTPServerResponse res)
{
    // Основной роутер для обработки запросов
    router.get("/", &indexPage);
    router.get("/form", &formPage);
    router.post("/submit", &submitForm);

    router.handle(req, res);
}

void indexPage(HTTPServerRequest req, HTTPServerResponse res)
{
    res.render!("index.dt");
}

void formPage(HTTPServerRequest req, HTTPServerResponse res)
{
    res.render!("form.dt");
}

void submitForm(HTTPServerRequest req, HTTPServerResponse res)
{
    // Обработка данных формы
    string name = req.form["name"];
    int age = req.form["age"].to!int;

    res.writeBody("Name: " ~ name ~ ", Age: " ~ age.to!string);
}

Шаблоны

Создадим шаблоны для отображения HTML-страниц. Сначала создадим директорию views в корне проекта, а затем создадим файлы index.dt и form.dt.

views/index.dt

<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome to Vibe.d</h1>
    <a href="/form">Go to Form</a>
</body>
</html>

views/form.dt

<!DOCTYPE html>
<html>
<head>
    <title>Form Page</title>
</head>
<body>
    <h1>Fill out the form</h1>
    <form action="/submit" method="post">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name"><br>
        <label for="age">Age:</label>
        <input type="number" id="age" name="age"><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

Методы GET и POST

В Vibe.d методы GET и POST обрабатываютс различными функциями. В нашем примере:

  • GET метод используется для отображения формы. Когда пользователь заходит на страницу /form, вызывается функция formPage, которая рендерит шаблон form.dt.
  • POST метод используется для отправки данных формы. Когда пользователь отправляет форму, вызыватеся функция submitForm, которая извлекает данные из запроса и обрабатывает их.

Обработка данных из формы

В функции submitForm мы получаем данные из формы следующим образом:

void submitForm(HTTPServerRequest req, HTTPServerResponse res)
{
    // Обработка данных формы
    string name = req.form["name"];
    int age = req.form["age"].to!int;

    res.writeBody("Name: " ~ name ~ ", Age: " ~ age.to!string);
}

Здесь req.form представляет собой словарь, содержащий данные формы. Мы извлекаем значения с помощью ключей "name" и "age", а затем обрабатываем их.

Запуск сервера

Чтобы запустить сервер, выполните команду:

dub

Теперь сервер запущен и доступен по адресу http://127.0.0.1:8080. Вы можете перейти по этому адресу, чтобы увидеть приветственную страницу, а затем перейти на /form для заполнения формы.


Карпов Ярослав

Автор статьи:

Обновлено:

30.05.2024


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *