Python · API · Середній рівень
Token-авторизація
Зареєструйте користувача, отримайте токен авторизації та виконуйте авторизовані запити до API.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Реєстрація, токен і авторизовані запити
#Довідник Token-авторизації
#Вправи:
Зареєструвати нового користувача
#Зареєструйте нового користувача, надіславши POST до /api/users/register/ з логіном і паролем. Виведіть код статусу і JSON відповіді.
import requests
BASE_URL = 'https://apilearn.tukas.dev'
data = {
'username': 'testuser01',
'password': 'mypassword123',
}
# Зареєструйтеся і виведіть код статусу + відповідь
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
data = {
'username': 'testuser01',
'password': 'mypassword123',
}
response = requests.post(f'{BASE_URL}/api/users/register/', json=data)
print(response.status_code)
print(response.json())
Отримати токен авторизації
#Зробіть POST до /api/auth/token/ із логіном і паролем та виведіть рядок токена з відповіді.
import requests
BASE_URL = 'https://apilearn.tukas.dev'
credentials = {
'username': 'testuser01',
'password': 'mypassword123',
}
# Отримайте токен і виведіть його
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
credentials = {
'username': 'testuser01',
'password': 'mypassword123',
}
response = requests.post(f'{BASE_URL}/api/auth/token/', json=credentials)
token = response.json()['token']
print(token)
Доступ до захищеного ендпоінта
#Використовуючи отриманий токен, надішліть GET до /api/users/profile/ із заголовком Authorization. Виведіть логін із відповіді профілю.
import requests BASE_URL = 'https://apilearn.tukas.dev' token = 'ВСТАВТЕ_ВАШ_ТОКЕН_ТУТ' # GET профілю із заголовком Authorization і виведення логіну
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
token = 'ВСТАВТЕ_ВАШ_ТОКЕН_ТУТ'
headers = {'Authorization': f'Token {token}'}
response = requests.get(f'{BASE_URL}/api/users/profile/', headers=headers)
print(response.json()['username'])
Що буде без авторизації
#Спробуйте зробити GET /api/cart/ без заголовка Authorization. Виведіть код статусу і повідомлення про помилку з відповіді.
import requests BASE_URL = 'https://apilearn.tukas.dev' # GET /api/cart/ без заголовка авторизації
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/cart/')
print(response.status_code)
print(response.json())
Session для кількох викликів
#Зареєструйте користувача, отримайте токен, а потім використайте requests.Session() для двох автентифікованих викликів — GET /api/users/profile/ і GET /api/cart/ — без вказання заголовка Authorization у кожному виклику. Виведіть логін із профілю і відповідь кошика.
import requests BASE_URL = 'https://apilearn.tukas.dev' # 1. Реєстрація # 2. Отримання токена # 3. Створення Session із заголовком авторизації # 4. Два виклики через Session
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
# Реєстрація
reg = requests.post(f'{BASE_URL}/api/users/register/', json={
'username': 'sessionuser01', 'password': 'securepass123',
})
# Отримання токена
token = requests.post(f'{BASE_URL}/api/auth/token/', json={
'username': 'sessionuser01', 'password': 'securepass123',
}).json()['token']
# Session
session = requests.Session()
session.headers['Authorization'] = f'Token {token}'
profile = session.get(f'{BASE_URL}/api/users/profile/').json()
cart = session.get(f'{BASE_URL}/api/cart/').json()
print(profile['username'])
print(cart)