Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «request і response». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)`req` (request) представляє вхідний HTTP-запит клієнта (метод, URL, query, params, body, headers), а `res` (response) - об'єкт, яким сервер відправляє відповідь (текст, JSON, статус, заголовки, редіректи); Express створює цю пару для кожного запиту й передає в обробник маршруту. **Ключове:** обидва об'єкти живуть лише під час обробки одного конкретного запиту - `req.params` дає параметри шляху (`/users/:id`), `req.query` - query-рядок, а `req.body` - тіло (потребує `express.json()`).Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Що таке Request і Response > В Express.js: > > - `req` **(request)** - об'єкт, що представляє **вхідний HTTP-запит** від клієнта; > - `res` **(response)** - об'єкт, за допомогою якого сервер **відправляє відповідь** клієнту. Коли клієнт робить запит (наприклад, `GET /users?id=10`), Express автоматично створює ці два об'єкти й передає їх у твій обробник маршруту. ### Приклад: ```javascript 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); ``` Клієнт → сервер: ```javascript GET /hello ``` Сервер відповідає: ```javascript Привіт, 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')` | ### Приклад запиту з параметрами: ```javascript 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 і статусом ```javascript app.post('/api/users', (req, res) => { const user = req.body; console.log(user); res.status(201).json({ message: 'Користувача створено', data: user }); }); ``` Відповідь: ```javascript { "message": "Користувача створено", "data": { "name": "Тім", "age": 25 } } ``` ## 4. Як Express пов'язує req і res Кожного разу, коли клієнт робить HTTP-запит: ```javascript Client → [Express App] → Middleware → Route Handler → res.send() ``` Express створює пару об'єктів: - `req` - щоб передати дані запиту; - `res` - щоб повернути відповідь. Вони живуть **лише під час обробки одного запиту**. ## 5. Приклад з обома об'єктами ```javascript 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.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.