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

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

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

Этап 08 · Основные этапы

Чтение тела запроса

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы добавите поддержку метода POST для эндпоинта /files/{filename}, который принимает текст от клиента и создаёт новый файл с этим текстом.

Тело запроса

Тело запроса используется для передачи данных от клиента серверу.

Пример запроса POST /files/{filename}:

// Request line
POST /files/number HTTP/1.1
\r\n
 
// Headers
Host: localhost:4221\r\n
User-Agent: curl/7.64.1\r\n
Accept: */*\r\n
Content-Type: application/octet-stream  // Header that specifies the format of the request body
Content-Length: 5\r\n                   // Header that specifies the size of the request body, in bytes
\r\n
 
// Request Body
12345

Тесты

Тестирующая система запустит программу с флагом --directory. Флаг --directory задаёт абсолютный путь к каталогу, в котором нужно создать файл.

$ ./your_program.sh --directory /tmp/

Затем она отправит запрос POST к эндпоинту /files/{filename} вашего сервера, содержащий:

  • Заголовок Content-Type со значением application/octet-stream.
  • Заголовок Content-Length с размером тела запроса в байтах.
  • Тело запроса с произвольным текстом.
$ curl -v --data "12345" -H "Content-Type: application/octet-stream" http://localhost:4221/files/file_123

Сервер должен вернуть ответ 201:

HTTP/1.1 201 Created\r\n\r\n

Также сервер должен создать новый файл в каталоге файлов со следующими требованиями:

  • Имя файла должно совпадать с параметром filename эндпоинта.
  • Файл должен содержать содержимое тела запроса.

Проверка в вашей 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 qv8

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

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

go / ЛОКАЛЬНО

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

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

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

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