GET и POST запросы

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

Тренажер по Python

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

Список тем

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

id: 40146_task1

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

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

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

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

id: 40146_task2

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

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

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

id: 40146_task3

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

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

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

Исправьте ошибку в 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 сек.
Показать подсказку

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 сек.
Показать подсказку

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

id: 40146_task6

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

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

Извлечение данных из 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'])
Сообщения
Проверить
Показать подсказку

Отправка 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 сек.
Показать подсказку

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

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 сек.
Показать подсказку

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

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 сек.
Показать подсказку

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

id: 40146_task11

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

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

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

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

id: 40146_task12

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

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

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

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 сек.
Показать подсказку

Работа с параметрами 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
Сообщения
Проверить
Показать подсказку

Полный цикл: запрос с проверкой и обработкой 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 сек.
Показать подсказку
НайтиКурс.Ру