JavaScript · API · Початковий
Редиректи
Розберіться з HTTP-редиректами і керуйте тим, як fetch їх обробляє.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Робота з редиректами на практиці
#Довідник редиректів
#Вправи:
Слідувати за редиректом
#const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// fetch /api/redirect/ і вивести кінцевий URL та статус
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const response = await fetch(`${BASE_URL}/api/redirect/`);
console.log(response.url);
console.log(response.status);
}
main();
Визначити, чи відбувся редирект
#const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const url = `${BASE_URL}/api/redirect/`;
// fetch і порівняти url з response.url
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const url = `${BASE_URL}/api/redirect/`;
const response = await fetch(url);
console.log(response.url !== url);
}
main();
Порівняти тимчасовий та постійний редирект
#const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// fetch обидва ендпоінти і вивести кінцевий url + status для кожного
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const r1 = await fetch(`${BASE_URL}/api/redirect/`);
console.log('Temporary:', r1.url, r1.status);
const r2 = await fetch(`${BASE_URL}/api/redirect/permanent/`);
console.log('Permanent:', r2.url, r2.status);
}
main();
Зупинитись на редиректі в ручному режимі
#const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// ручний редирект
// автоматичний редирект
// порівняти
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const manual = await fetch(`${BASE_URL}/api/redirect/`, { redirect: 'manual' });
console.log('Manual — type:', manual.type, 'status:', manual.status);
const follow = await fetch(`${BASE_URL}/api/redirect/`, { redirect: 'follow' });
console.log('Follow — url:', follow.url, 'status:', follow.status);
}
main();
Отримати дані через редирект
#const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// fetch через редирект і прочитати тіло відповіді
}
main();
Рішення
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const response = await fetch(`${BASE_URL}/api/redirect/`);
const data = await response.json();
console.log(data.count);
}
main();