JavaScript · API · Початковий
Параметри запиту
Фільтруйте, шукайте, сортуйте та переходьте по сторінках результатів API за допомогою URLSearchParams.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Фільтрація, сортування та пошук — паттерни
#Довідник параметрів запиту
#Вправи:
Фільтрація за категорією
#Отримайте всі товари категорії "bedroom" за допомогою `URLSearchParams`. Виведіть кількість результатів та назву першого товару.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// URLSearchParams для фільтрації category='bedroom'
// вивести count та назву першого товару
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const params = new URLSearchParams({ category: 'bedroom' });
const response = await fetch(`${BASE_URL}/api/products/?${params}`);
const data = await response.json();
console.log(data.count);
console.log(data.results[0].name);
}
main();
Сортування за ціною
#Отримайте 5 найдешевших товарів за допомогою `ordering=price` та `page_size=5`. Виведіть назву і ціну кожного.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// ordering=price, page_size=5
// вивести назву і ціну кожного
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const params = new URLSearchParams({ ordering: 'price', page_size: 5 });
const response = await fetch(`${BASE_URL}/api/products/?${params}`);
const data = await response.json();
for (const p of data.results) {
console.log(p.name, p.price);
}
}
main();
Пошук товарів
#Знайдіть товари за запитом "oak" за допомогою параметра `search`. Виведіть загальну кількість знайдених та назву кожного.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// search=oak, вивести count та кожну назву
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const params = new URLSearchParams({ search: 'oak' });
const response = await fetch(`${BASE_URL}/api/products/?${params}`);
const data = await response.json();
console.log(`${data.count} результатів`);
for (const p of data.results) {
console.log(p.name);
}
}
main();
Комбінація категорії та сортування
#Отримайте найдорожчі товари категорії "dining-room" — поєднайте `category=dining-room` та `ordering=-price`. Виведіть назву і ціну кожного результату на першій сторінці.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// category=dining-room, ordering=-price
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const params = new URLSearchParams({ category: 'dining-room', ordering: '-price' });
const response = await fetch(`${BASE_URL}/api/products/?${params}`);
const data = await response.json();
for (const p of data.results) {
console.log(p.name, p.price);
}
}
main();
Багаторазова функція getProducts()
#Напишіть функцію `getProducts(params = {})`, яка приймає об'єкт параметрів запиту і повертає масив `results`. Викличте її трьома способами: без параметрів, з `category` і з `search` + `ordering`.
const BASE_URL = 'https://apilearn.tukas.dev';
async function getProducts(params = {}) {
// побудувати URL з params, повернути масив results
}
async function main() {
const all = await getProducts();
console.log('all:', all.length);
const bedroom = await getProducts({ category: 'bedroom' });
console.log('bedroom:', bedroom.length);
const found = await getProducts({ search: 'wood', ordering: 'price' });
console.log('wood asc:', found.length);
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function getProducts(params = {}) {
const qs = new URLSearchParams(params);
const response = await fetch(`${BASE_URL}/api/products/?${qs}`);
const data = await response.json();
return data.results;
}
async function main() {
const all = await getProducts();
console.log('all:', all.length);
const bedroom = await getProducts({ category: 'bedroom' });
console.log('bedroom:', bedroom.length);
const found = await getProducts({ search: 'wood', ordering: 'price' });
console.log('wood asc:', found.length);
}
main();