Зрозуміти базові принципи побудови бекенду. Написати перший у житті веб-сервер на базі середовища Node.js та фреймворку Express.js. Створити власний REST API маршрут, який віддаватиме JSON-масив товарів (замінивши чужий сервер FakeStoreAPI).
npm init -y) поруч із фронтендом.express та налаштування CORS.server.js.GET маршруту /api/products (створення свого FakeStoreAPI).React із власним бекендом Node.js.Увага: До цього моменту ваш браузер робив запити (fetch) на публічний чужий API в Інтернеті. Тепер ми станемо “творцями” власного API, тим самим отримавши повний Full-Stack додаток!
techshop-backend.npm init -y (це створить package.json сервера).npm install express cors
npm install --save-dev nodemon
server.js.Вставте базовий кістяк сервера:
const express = require("express");
const cors = require("cors"); // Дозволяє браузерам робити запити з інших портів (React на 5173 -> Node на 3000)
const app = express();
const PORT = 3000;
// Вмикаємо парсинг JSON та CORS
app.use(express.json());
app.use(cors());
// Наша "База Даних" в оперативній пам'яті (заглушка)
const myProducts = [
{
id: 1,
title: "Супер Смартфон X",
price: 999,
image: "https://via.placeholder.com/150",
},
{
id: 2,
title: "Ігровий Ноутбук Y",
price: 1599,
image: "https://via.placeholder.com/150",
},
{
id: 3,
title: "Бездротові Навушники Z",
price: 199,
image: "https://via.placeholder.com/150",
},
];
// СТВОРЮЄМО GET Маршрут (Endpoint)! Ось де магія:
app.get("/api/products", (req, res) => {
// Коли хтось стукає за адресою /api/products, ми повертаємо масив myProducts
res.status(200).json(myProducts);
});
// Запускаємо прослуховування порту
app.listen(PORT, () => {
console.log(`Бекенд сервер працює на http://localhost:${PORT}`);
});
npx nodemon server.js. (Nodemon буде автоматично перезапускати сервер при зміні коду).http://localhost:3000/api/products.npm run dev).src/pages/Home.jsx. Знайдіть ваш хук useEffect.Замініть рядок:
// БУЛО: const response = await fetch('https://fakestoreapi.com/products?limit=8');
// СТАЛО: (робимо запит до НАШОГО власного локального сервера)
const response = await fetch("http://localhost:3000/api/products");
git add . (з кореневої папки, щоб охопити і бекенд, і фронтенд).git commit -m "Create local Node.js Express backend and link React to it".Перехід від Frontend до Full-Stack. Ви навчились створювати RESTful кінцеві точки (endpoints) на “чистому” JavaScript (серверна версія Node.js) та об’єднувати їх із клієнтським додатком на React.
window або document?cors (Cross-Origin Resource Sharing)? Яку помилку в консолі браузера (Chrome DevTools) він вирішує?app.get() відрізняється від app.post() у термінах REST API? За що відповідають об’єкти req та res у колбек-функції?Ctrl+C), що побачить користувач на React-клієнті, завдяки нашому блоку try...catch?res.status(200).json(myProducts). Як розшифровується число статусу 200?