Python · API · Початковий рівень
Перенаправлення
Розберіться з HTTP-перенаправленнями, перевіряйте ланцюжки редиректів і керуйте їх обробкою.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Робота з перенаправленнями на практиці
#Довідник перенаправлень
#Вправи:
Слідувати за перенаправленням
#Надішліть GET-запит до /api/redirect/ (зі стандартним слідуванням за перенаправленнями). Виведіть фінальний код статусу і URL, на якому ви опинилися.
import requests BASE_URL = 'https://apilearn.tukas.dev' # Слідуйте за перенаправленням і виведіть status_code та фінальний URL
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/redirect/')
print(response.status_code)
print(response.url)
Побачити саме перенаправлення
#Надішліть GET до /api/redirect/ з allow_redirects=False. Виведіть код статусу і заголовок Location.
import requests BASE_URL = 'https://apilearn.tukas.dev' # Вимкніть слідування за перенаправленнями і перевірте відповідь
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/redirect/', allow_redirects=False)
print(response.status_code)
print(response.headers['Location'])
Огляд історії перенаправлень
#Надішліть GET до /api/redirect/ та виведіть усі проміжні відповіді з response.history. Для кожної виведіть код статусу і URL. Потім виведіть фінальні код статусу і URL.
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/redirect/')
# Виведіть кожен перехід у response.history, потім фінальну відповідь
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/redirect/')
for hop in response.history:
print(hop.status_code, hop.url)
print(response.status_code, response.url)
Підрахувати переходи в ланцюжку
#Надішліть GET до /api/redirect/chain/5/ та виведіть кількість перенаправлень. Потім виведіть URL кожного переходу в ланцюжку.
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/redirect/chain/5/')
# Виведіть кількість переходів і кожен URL у ланцюжку
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/redirect/chain/5/')
print(f'Переходів: {len(response.history)}')
for hop in response.history:
print(hop.url)
Порівняти типи перенаправлень
#Порівняйте /api/redirect/ і /api/redirect/permanent/ поруч. Для кожного використайте allow_redirects=False і виведіть код статусу.
import requests BASE_URL = 'https://apilearn.tukas.dev' # Перевірте коди статусу обох типів перенаправлень без слідування
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
r_temp = requests.get(f'{BASE_URL}/api/redirect/', allow_redirects=False)
r_perm = requests.get(f'{BASE_URL}/api/redirect/permanent/', allow_redirects=False)
print(f'/api/redirect/ → {r_temp.status_code}')
print(f'/api/redirect/permanent/ → {r_perm.status_code}')