request і response
1. Що таке Request і Response
В Express.js:
req(request) - об'єкт, що представляє вхідний HTTP-запит від клієнта;res(response) - об'єкт, за допомогою якого сервер відправляє відповідь клієнту.
Коли клієнт робить запит (наприклад, GET /users?id=10), Express автоматично створює ці два об'єкти й передає їх у твій обробник маршруту.
Приклад:
const express = require('express');
const app = express();
app.get('/hello', (req, res) => {
console.log(req.method); // "GET"
console.log(req.url); // "/hello"
res.send('Привіт, Express!');
});
app.listen(3000);Клієнт → сервер:
GET /helloСервер відповідає:
Привіт, Express!2. Об'єкт req (Request)
req- це об'єкт, що представляє HTTP-запит, який надійшов від клієнта.
Він містить усе, що клієнт відправив: URL, параметри, тіло, заголовки тощо.
Основні властивості req
| Властивість | Опис | Приклад |
|---|---|---|
req.method | HTTP-метод запиту | 'GET', 'POST', 'PUT', 'DELETE' |
req.url | Повний URL запиту | '/users?name=tim' |
req.path | Лише шлях без query | '/users' |
req.query | Об'єкт query-параметрів | { name: 'tim' } |
req.params | Параметри маршруту | /users/:id → { id: '123' } |
req.body | Тіло запиту (для POST/PUT) | { name: 'John' } (при express.json()) |
req.headers | HTTP-заголовки | { 'content-type': 'application/json' } |
req.cookies | Куки (за підключеного cookie-parser) | { token: 'abc123' } |
req.ip | IP-адреса клієнта | '127.0.0.1' |
req.protocol | 'http' чи 'https' | 'http' |
req.get(headerName) | Отримати конкретний заголовок | req.get('User-Agent') |
Приклад запиту з параметрами:
app.get('/user/:id', (req, res) => {
console.log(req.params.id); // шлях: /user/42 → "42"
console.log(req.query); // query: ?name=Tim → { name: 'Tim' }
res.send('Користувача знайдено');
});3. Об'єкт res (Response)
res- це об'єкт, за допомогою якого Express відправляє відповідь клієнту.
Ти можеш:
- повернути текст, JSON, HTML;
- задати статус, заголовки, куки;
- завершити відповідь.
Основні методи res
| Метод | Призначення | Приклад |
|---|---|---|
res.send(data) | Відправити текст, HTML чи JSON | res.send('Hello!') |
res.json(obj) | Відправити JSON-об'єкт | res.json({ ok: true }) |
res.status(code) | Встановити статус відповіді | res.status(404).send('Not Found') |
res.set(header, value) | Встановити HTTP-заголовок | res.set('X-Powered-By', 'Express') |
res.redirect(url) | Перенаправити клієнта | res.redirect('/login') |
res.download(file) | Відправити файл на завантаження | res.download('report.pdf') |
res.sendFile(path) | Відправити файл як відповідь | res.sendFile(__dirname + '/index.html') |
res.end() | Завершити відповідь без тіла | res.end() |
Приклад з JSON і статусом
app.post('/api/users', (req, res) => {
const user = req.body;
console.log(user);
res.status(201).json({
message: 'Користувача створено',
data: user
});
});Відповідь:
{
"message": "Користувача створено",
"data": { "name": "Тім", "age": 25 }
}4. Як Express пов'язує req і res
Кожного разу, коли клієнт робить HTTP-запит:
Client → [Express App] → Middleware → Route Handler → res.send()Express створює пару об'єктів:
req- щоб передати дані запиту;res- щоб повернути відповідь.
Вони живуть лише під час обробки одного запиту.
5. Приклад з обома об'єктами
app.post('/feedback', (req, res) => {
const { name, message } = req.body;
console.log(`Від ${name}: ${message}`);
res.status(200).send(`Дякую, ${name}, ваше повідомлення отримано!`);
});6. Підсумок
req(Request) - об'єкт вхідного запиту: містить метод, шлях, параметри, тіло, заголовки та інші дані клієнта.
res(Response) - об'єкт відповіді: використовується для відправки даних клієнту, встановлення статусу й заголовків.Разом вони утворюють основу взаємодії між клієнтом і сервером в Express.js.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.