JavaScript · API · Початковий
Категорії
Отримайте категорії товарів та використовуйте їх для фільтрації списку продуктів.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Практичні паттерни з категоріями
#Довідник ендпоінтів категорій
#Вправи:
Список усіх категорій
#Отримайте `/api/categories/` і виведіть загальну кількість категорій (`count`) та `name` кожної.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// fetch /api/categories/ і вивести count + назви
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const response = await fetch(`${BASE_URL}/api/categories/`);
const data = await response.json();
console.log(data.count);
for (const cat of data.results) {
console.log(cat.name);
}
}
main();
Знайти категорію за назвою
#Отримайте всі категорії, потім знайдіть ту, що називається "Bedroom", за допомогою `.find()` на `data.results`. Виведіть її `id`, `name` та `slug`.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// знайти категорію "Bedroom" і вивести id, name, slug
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const response = await fetch(`${BASE_URL}/api/categories/`);
const data = await response.json();
const bedroom = data.results.find(c => c.name === 'Bedroom');
console.log(bedroom.id);
console.log(bedroom.name);
console.log(bedroom.slug);
}
main();
Товари у категорії
#Отримайте всі категорії, візьміть першу з `results`, потім отримайте її товари за допомогою `category=<slug>`. Виведіть назву категорії та кількість товарів.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// 1. отримати категорії (використати data.results)
// 2. взяти slug першої категорії для фільтрації товарів
// 3. вивести назву категорії та кількість товарів
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const catResponse = await fetch(`${BASE_URL}/api/categories/`);
const catData = await catResponse.json();
const first = catData.results[0];
const params = new URLSearchParams({ category: first.slug });
const prodResponse = await fetch(`${BASE_URL}/api/products/?${params}`);
const prodData = await prodResponse.json();
console.log(first.name);
console.log(prodData.count);
}
main();
Кількість товарів у кожній категорії
#Для кожної категорії з `data.results` отримайте кількість товарів і виведіть `"НазваКатегорії: N товарів"`. Використовуйте `page_size=1`, щоб не завантажувати зайві дані.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// для кожної категорії в data.results: fetch count і вивести "Name: N products"
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const catResponse = await fetch(`${BASE_URL}/api/categories/`);
const catData = await catResponse.json();
for (const cat of catData.results) {
const params = new URLSearchParams({ category: cat.slug, page_size: 1 });
const prodResponse = await fetch(`${BASE_URL}/api/products/?${params}`);
const data = await prodResponse.json();
console.log(`${cat.name}: ${data.count} products`);
}
}
main();
Map slug → name для категорій
#Отримайте всі категорії та побудуйте звичайний об'єкт, що відображає кожен `slug` на його `name`. Виведіть map і знайдіть назву для slug `"bedroom"`.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// побудувати { slug: name } map з data.results
// вивести map і знайти 'bedroom'
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const response = await fetch(`${BASE_URL}/api/categories/`);
const data = await response.json();
const categoryMap = Object.fromEntries(data.results.map(c => [c.slug, c.name]));
console.log(categoryMap);
console.log(categoryMap['bedroom']);
}
main();