Веб-приложения часто требуют взаимодействия с пользователем через формы для сбора данных. В этом руководстве мы рассмотрим, как использовать библиотеку 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
для заполнения формы.
Автор статьи:
Обновлено:
Добавить комментарий