Нарешті відмовитися від “заглушок” (mock-даних) і навчитися отримувати реальну інформацію з віддалених серверів Інтернету. Опанувати Fetch API для здійснення HTTP-запитів (GET) та обробку JSON-відповідей для наповнення інтернет-магазину реальними товарами.
fetch() та async / await для запиту списку товарів.products на завантажені дані.Увага: Заключний етап Ванільного JavaScript. “TechShop” перетворюється на справжній клієнт серверного додатку.
https://fakestoreapi.com/products?limit=8.fetchProducts (main.js):
setTimeout. Тепер ми її видалимо.Ми напишемо справжній запит до серверу:
// Старий масив `const products = [...]` ми БІЛЬШЕ НЕ ВИКОРИСТОВУЄМО. Закоментуйте його.
// Нова функція завантаження:
async function fetchProducts() {
try {
// 1. Надсилаємо мережевий GET-запит
const response = await fetch(
"https://fakestoreapi.com/products?limit=8",
);
// 2. Перевіряємо чи статус відповіді ОК (200-299)
if (!response.ok) {
throw new Error(`HTTP помилка: ${response.status}`);
}
// 3. Розпаковуємо тіло відповіді з JSON у звичайний масив JavaScript
const realProducts = await response.json();
// Розкоментуйте, щоб побачити масив у консолі:
// console.log("Дані з сервера:", realProducts);
// Повертаємо масив, щоб ним міг скористатися initShop()
return realProducts;
} catch (error) {
console.error("Помилка завантаження товарів:", error.message);
// Прокидаємо помилку далі, щоб спінер зник і користувач побачив "Помилка мережі"
throw error;
}
}
products, функція перехоплення кліку (яка шукає товар через products.find) буде видавати помилку “products is not defined”.let globalStoreProducts = [];, заповнити її після того, як initShop отримав data, і в події кліку “Купити” шукати товар вже по globalStoreProducts.htmlString = data.map(...) у функції initShop потрібно злегка змінити, оскільки тепер у JSON-даних інші назви полів (наприклад ціна тепер у доларах).product.price грн на $${product.price} (вставте знак долара).img src вставте ${product.image} (на щастя, API також віддає картинку саме у цьому полі).git add . та git commit -m "Fetch real products from FakeStoreAPI using Fetch".main.Інтернет-магазин повністю інтегрований із зовнішнім світом. Він завантажує дані через Інтернет, перетворює JSON і будує інтерфейс динамічно так, як це роблять Amazon, Розетка чи Prom.
fetch()?fetch('htt://nepravylniy-url.com') буде зламаний? (Хто спіймає помилку і де ми це побачимо у нашому скрипті?)await response.json() замість звичайного response.text() чи простого використання змінної response без методів? Що фізично зберігається у “сирому” response?GET? Чому за замовчуванням fetch() робить саме GET?