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)