Python · API · Средний уровень
Token-авторизация
Зарегистрируйте пользователя, получите токен авторизации и выполняйте авторизованные запросы к API.
Краткое введение в тему и пояснения перед упражнениями (упражнения ниже):
Регистрация, токен и авторизованные запросы
#Справочник Token-авторизации
#Упражнения:
Зарегистрировать нового пользователя
#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())
Получить токен авторизации
#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)
Доступ к защищённому эндпоинту
#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'])
Что будет без авторизации
#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 для нескольких вызовов
#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)