GET и POST запросы

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

Этот тренажер посвящен работе с сетью в Python — а именно выполнению HTTP-запросов с помощью библиотеки requests. Ты научишься отправлять GET и POST запросы, передавать параметры и данные, обрабатывать ответы сервера и работать с JSON. Эти навыки пригодятся для взаимодействия с API различных сервисов, парсинга данных и автоматизации задач. Мы начнем с простых запросов и постепенно перейдем к более сложным сценариям — отправке форм, передаче заголовков и обработке ошибок. Библиотека requests делает всю эту работу максимально удобной и понятной, скрывая сложности низкоуровневых операций.

Список тем

1. Импорт библиотеки и первый GET-запрос

id: 40146_task1

Чтобы работать с сетью, нужно сначала импортировать нужную библиотеку. Затем выполните простой GET-запрос к указанному URL и сохраните результат в переменную.

Заполните пропуски
import input1S

response = requests.input2S('https://api.example.com/data')
print(response)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Атрибуты объекта Response

id: 40146_task2

После выполнения запроса вы получаете объект Response с различными атрибутами. Сопоставьте атрибуты с тем, что они возвращают.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
Возвращает тело ответа в виде строки
Возвращает числовой код статуса HTTP (200, 404 и т.д.)
Возвращает словарь с заголовками ответа
Парсит JSON из тела ответа и возвращает словарь/список
.headers
.text
.status_code
.json()
Сообщения
Проверить
Показать подсказку

3. Проверка статуса ответа

id: 40146_task3

Проанализируйте код и определите, что будет выведено на экран, если сервер успешно обработал запрос.

Выберите правильный вариант ответа
import requests

response = requests.get('https://httpbin.org/get')
# Предположим, сервер вернул статус 200
print(response.status_code == 200)
Сообщения
Проверить
Показать подсказку

4. Исправьте ошибку в GET-запросе с параметрами

id: 40146_task4

В коде допущена ошибка при передаче параметров в GET-запрос. Найдите и исправьте строку с ошибкой.

Найдите ошибку и исправьте
import requests
 
params = {'query': 'python', 'page': 1}
response = requests.get('https://api.example.com/search', parameters=params)
print(response.text)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. POST-запрос с данными формы

id: 40146_task5

Соберите код для отправки POST-запроса с данными формы. Используйте токены из банка для заполнения пропусков.

Нужно правильно расставить в пропуски предложенные варианты
import requests

form_data = {'username': 'admin', 'password': 'secret'}
response = requests.input1S('https://api.example.com/login', input2S=form_data)
print(response.status_code)
post
get
data
params
json
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. GET vs POST: когда что использовать

id: 40146_task6

Распределите сценарии использования по категориям: где уместен GET-запрос, а где POST-запрос.

Перетяните элементы в соответствующие блоки
GET-запросы
POST-запросы
Получить список товаров из каталога
Отправить логин и пароль для авторизации
Загрузить страницу по URL
Отправить файл на сервер
Поиск по сайту с ключевым словом
Создать новую запись в базе данных
Сообщения
Проверить
Показать подсказку

7. Извлечение данных из JSON

id: 40146_task7

Сервер вернул JSON-ответ. Определите, что выведет код при обращении к конкретному ключу.

Что должно получиться?
import requests

# Предположим, сервер вернул: {"name": "Alice", "age": 25, "city": "Moscow"}
response = requests.get('https://api.example.com/user')
data = response.json()
print(data['city'])
Сообщения
Проверить
Показать подсказку

8. Отправка JSON в POST-запросе

id: 40146_task8

Многие API принимают данные в формате JSON. Заполните пропуски, чтобы отправить данные именно в этом формате.

Заполните пропуски
import requests

user_data = {'name': 'Bob', 'email': 'bob@example.com'}
response = requests.input1S(
    'https://api.example.com/users',
    input2S=user_data
)
print(response.input3S)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

9. Соберите код с обработкой ошибок

id: 40146_task9

Соберите код, который выполняет GET-запрос и корректно обрабатывает возможные ошибки с помощью метода raise_for_status(). Одна строка лишняя.

Перетяните в правильном порядке строки из одного блока в другой
response.raise_for_status()
import requests
try:
    response = requests.get('https://api.example.com/data')
except requests.exceptions.HTTPError as e:
    print(f'Ошибка: {e}')
    print(response.text)
response.check_status()
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

10. Исправьте передачу заголовков

id: 40146_task10

В коде есть ошибка при передаче пользовательских заголовков в запрос. Найдите и исправьте её.

Найдите ошибку и исправьте
import requests
 
my_headers = {'Authorization': 'Bearer token123', 'Accept': 'application/json'}
response = requests.get('https://api.example.com/protected', header=my_headers)
print(response.json())
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

11. Что вернет проверка успешности?

id: 40146_task11

Изучите код и определите, что будет выведено. Сервер вернул статус 404 (страница не найдена).

Выберите правильный вариант ответа
import requests

response = requests.get('https://api.example.com/nonexistent')
# Сервер вернул статус 404
print(response.ok)
Сообщения
Проверить
Показать подсказку

12. Порядок работы с API

id: 40146_task12

Расставьте шаги работы с REST API в правильном порядке: от импорта до обработки данных.

Расставьте строки в правильном порядке
Подготовить параметры или данные для запроса
Обработать полученные данные (response.json() или response.text)
Импортировать библиотеку requests
Выполнить запрос (requests.get или requests.post)
Проверить статус ответа (response.status_code или response.ok)
Сообщения
Проверить
Показать подсказку

13. Установка таймаута для запроса

id: 40146_task13

Чтобы запрос не висел бесконечно при проблемах с сервером, нужно установить таймаут. Заполните пропуски для установки таймаута в 5 секунд.

Заполните пропуски
import requests

try:
    response = requests.get('https://api.example.com/slow', input1S=input2S)
    print(response.text)
except requests.exceptions.input3S:
    print('Сервер не ответил вовремя')
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

14. Работа с параметрами URL

id: 40146_task14

Определите, какой URL будет сформирован при выполнении запроса. Введите только часть после знака вопроса (query string).

Что должно получиться?
import requests

params = {'category': 'books', 'limit': 10}
response = requests.get('https://api.example.com/items', params=params)
# Какой query string будет добавлен к URL?
# Введите в формате: key1=value1&key2=value2
Сообщения
Проверить
Показать подсказку

15. Полный цикл: запрос с проверкой и обработкой JSON

id: 40146_task15

Соберите полноценный код, который делает GET-запрос, проверяет успешность и выводит данные из JSON-ответа. Две строки лишние.

Перетяните в правильном порядке строки из одного блока в другой
response = requests.get('https://api.example.com/user/1')
import requests
    data = response.json()
if response.ok:
    print(f"Имя: {data['name']}")
else:
    print('Ошибка запроса')
data = response.text()
print(response.data['name'])
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Python: запуск кода в браузере

id: 40146_compiler
🐍
Запустить тренажёр (Python)
НайтиКурс.Ру