Ответ
HTTP-запрос, который обрабатывает Node.js-сервер, состоит из трёх основных частей:
1. Стартовая строка (Request Line):
Содержит метод, путь запроса и версию протокола.
GET /api/users?active=true HTTP/1.1
- Метод:
GET,POST,PUT,DELETE,PATCHи др. - Путь (Path): URL-адрес ресурса, часто с параметрами пути (например,
/api/users/:id). - Версия протокола: Обычно
HTTP/1.1илиHTTP/2.
2. Заголовки (Headers):
Метаданные запроса в формате Ключ: Значение. В Node.js они доступны в объекте req.headers.
Host: example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
User-Agent: Mozilla/5.0
Accept: application/json
3. Тело запроса (Body):
Необязательная часть, присутствует в POST, PUT, PATCH запросах. Содержит передаваемые данные (JSON, форма, файлы).
{
"name": "Alice",
"email": "alice@example.com"
}
Пример разбора в чистом Node.js:
const http = require('http');
const server = http.createServer((req, res) => {
// 1. Стартовая строка
const { method, url } = req;
console.log(`[${method}] ${url}`);
// 2. Заголовки
console.log('Headers:', req.headers['content-type']);
// 3. Тело (собирается по частям)
let body = [];
req.on('data', chunk => body.push(chunk));
req.on('end', () => {
body = Buffer.concat(body).toString();
console.log('Body:', body);
// Парсинг JSON, если заголовок верный
if (req.headers['content-type'] === 'application/json') {
const data = JSON.parse(body);
console.log('Parsed data:', data);
}
res.end('OK');
});
});
server.listen(3000, () => console.log('Сервер слушает порт 3000'));
В фреймворках типа Express эта структура абстрагирована: req.method, req.path, req.headers, req.body.
Видео-ответы
▶
▶
▶