Python · API · Початковий рівень
Перенаправлення
Розберіться з HTTP-перенаправленнями, перевіряйте ланцюжки редиректів і керуйте їх обробкою.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Робота з перенаправленнями на практиці
#Довідник перенаправлень
#Вправи:
Слідувати за перенаправленням
#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)
Побачити саме перенаправлення
#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'])
Огляд історії перенаправлень
#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)
Підрахувати переходи в ланцюжку
#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)
Порівняти типи перенаправлень
#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}')