Проектная лаборатория
Собственный HTTP-сервер
Этап 05 · Основные этапы
Чтение заголовка
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы реализуете эндпоинт /user-agent, который читает заголовок запроса User-Agent и возвращает его значение в теле ответа.
Заголовок User-Agent
Заголовок User-Agent описывает пользовательский агент клиента.
Эндпоинт /user-agent должен прочитать заголовок User-Agent и вернуть его значение в теле ответа. Пример запроса к /user-agent:
// Request line
GET
/user-agent
HTTP/1.1
\r\n
// Headers
Host: localhost:4221\r\n
User-Agent: foobar/1.2.3\r\n // Read this value
Accept: */*\r\n
\r\n
// Request body (empty)Ожидаемый ответ:
// Status line
HTTP/1.1 200 OK // Status code must be 200
\r\n
// Headers
Content-Type: text/plain\r\n
Content-Length: 12\r\n
\r\n
// Response body
foobar/1.2.3 // The value of `User-Agent`Тесты
Тестирующая система запустит вашу программу следующим образом:
$ ./your_program.shЗатем она отправит запрос GET к эндпоинту /user-agent вашего сервера. Запрос будет содержать заголовок User-Agent.
$ curl -v --header "User-Agent: foobar/1.2.3" http://localhost:4221/user-agentСервер должен вернуть ответ 200, содержащий:
- Заголовок
Content-Typeсо значениемtext/plain. - Заголовок
Content-Lengthс длиной значенияUser-Agent. - Тело сообщения со значением
User-Agent.
HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 12\r\n\r\nfoobar/1.2.3Примечания
- Имена заголовков не чувствительны к регистру.
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init http-server ./my-http-server --language go2. Откройте папку в IDE
cd ./my-http-serverРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage fs3Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.