Skip to content

Latest commit

 

History

History
118 lines (81 loc) · 5.88 KB

File metadata and controls

118 lines (81 loc) · 5.88 KB

🚀 Практическое занятие №5

Разные ответы в зависимости от пути


📌 Кратко

📌 Что это 📖 Полное описание
Учебный HTTP-сервер с маршрутизацией В этом задании сервер анализирует путь запроса и возвращает разные ответы в зависимости от target, включая разные HTML-страницы и ошибку 404

🎯 Цель

🎯 Что нужно понять 📖 Что это означает на практике
Анализ request target Сервер определяет, какой путь запросил клиент
Выбор ответа Для каждого пути формируется свой ответ
Управление статусом Сервер может вернуть 200 или 404
Выбор Content-Type HTML и текст возвращаются с разными типами

⚙️ Основной код

if (req.target() == "/") {
    res.set(http::field::content_type, "text/html; charset=utf-8");
    res.body() = "<h1>Main page</h1>\n";
} else if (req.target() == "/hello") {
    res.set(http::field::content_type, "text/html; charset=utf-8");
    res.body() = "<strong>Hello</strong>\n";
} else {
    res.result(http::status::not_found);
    res.set(http::field::content_type, "text/plain; charset=utf-8");
    res.body() = "404 Not Found\n";
}

🧠 Главная идея

🧠 Ключевая логика 📖 Смысл
req.target() → выбор ответа → формирование response Сервер анализирует путь запроса и возвращает разный результат

🔍 Проверка и результат

🔍 Что выполнить 📥 Какой результат должен быть
Выполнить curl для /, /hello и неизвестного пути Сервер возвращает разные HTML-ответы и корректный 404

🌐 Что происходит

🌐 Сценарий 📖 Результат
GET / HTML Main page
GET /hello HTML Hello
GET /unknown 404 Not Found

🚀 Сборка и запуск

🚀 Действие 💻 Команды
Создать урок, собрать и запустить cd ~/cppbackend/lessons && cp -r web_server_lesson_10_11 web_server_lesson_10_12 && cd web_server_lesson_10_12 && rm -rf build && nano main.cpp && mkdir build && cd build && conan install .. --build=missing && cmake .. && cmake --build . && ./bin/server

🧪 Полная проверка

📋 Что сделать ✅ Результат
Проверить разные URL через curl Ответы отличаются
Проверить неизвестный путь Возвращается 404
Проверить curl -i Виден статус 404

✅ Формулировка проверки

✅ Проверка ✅ Условие выполнено
Сделать запросы к разным путям Сервер возвращает разные ответы

⚠️ Важно

⚠️ Ошибка 📖 Причина
всегда один ответ нет проверки target
нет 404 не установлен status
HTML не работает неверный Content-Type

🏁 Итог

🏁 Что доказано 📌 Вывод
Сервер умеет различать пути и возвращать разные ответы Это основа маршрутизации backend сервера

💡 Вывод

💡 Главное
request.target() управляет логикой ответа сервера