Проектная лаборатория

Собственный HTTP-сервер

0 / 14этапов пройдено

Этап 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 go

2. Откройте папку в IDE

cd ./my-http-server

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage fs3

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста