JavaScript · API · Початковий
Редиректи
Розберіться з HTTP-редиректами і керуйте тим, як fetch їх обробляє.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Робота з редиректами на практиці
#Довідник редиректів
#Вправи:
Слідувати за редиректом
#Отримайте `/api/redirect/`. Виведіть `response.url` (кінцевий URL після редиректу) та `response.status`.
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();
Визначити, чи відбувся редирект
#Отримайте `/api/redirect/` і порівняйте вихідний URL з `response.url`. Виведіть `true`, якщо редирект відбувся, `false` в іншому випадку.
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();
Порівняти тимчасовий та постійний редирект
#Отримайте `/api/redirect/` і `/api/redirect/permanent/`. Для кожного виведіть кінцевий `response.url` та `response.status`.
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();
Зупинитись на редиректі в ручному режимі
#Отримайте `/api/redirect/` з `redirect: "manual"`. Виведіть `response.type` та `response.status`. Потім отримайте той самий URL зі стандартним `redirect: "follow"` і порівняйте.
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();
Отримати дані через редирект
#Отримайте `/api/redirect/` і розберіть JSON-тіло з кінцевої відповіді. Виведіть `data.count`, щоб підтвердити, що ви отримали список товарів.
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();