В этом модуле мы погружаемся в работу с сетью и внешними API (Application Programming Interface). Вы научитесь использовать самую популярную библиотеку Python для HTTP-запросов — requests.
Мы разберем основные методы (GET, POST, DELETE), научимся передавать параметры и заголовки, обрабатывать ответы в формате JSON и реагировать на различные коды состояния сервера. Эти навыки необходимы для взаимодействия с веб-сервисами, получения данных с сайтов и автоматизации сетевых задач.
Задания построены от простого к сложному: от базового импорта библиотеки до написания полноценных запросов с авторизацией. Внимательно читайте описания и подсказки, если возникнут трудности. Удачи в освоении API!
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Первый шаг: GET-запрос
Для начала работы нужно подключить библиотеку `requests` и выполнить простой GET-запрос к сайту. Заполните пропуски в коде.
import input1S
url = "https://api.github.com"
response = requests.input2S(url)
print(response.status_code)Методы HTTP и их назначение
В протоколе HTTP разные методы отвечают за разные действия с ресурсами. Сопоставьте метод запроса с его типичным назначением.
requests.get()requests.post()requests.delete()requests.put()Классификация кодов ответа (Status Codes)
Сервер возвращает числовые коды, сообщающие о результате запроса. Распределите коды по категориям: Успех, Ошибка клиента и Ошибка сервера.
Работа с JSON-ответом
Представьте, что мы сделали запрос к API погоды. Переменная `data` содержит результат выполнения `response.json()`. Что выведет указанный `print`?
data = {
"location": {"name": "London", "country": "UK"},
"current": {
"temp_c": 15.0,
"condition": {"text": "Partly cloudy"}
}
}
print(data['current']['temp_c'])Опечатки в коде запроса
Начинающий программист допустил ошибки при написании кода. Найдите и исправьте опечатку в импорте и в вызове метода.
import requestresponse = request.get('https://google.com')if response.status_code == 200: print("Success")Передача параметров в GET-запросе
Соберите код, который выполняет поиск по сайту. Сначала определите словарь параметров, а затем передайте его в функцию запроса.
payload = {'query': 'python', 'page': 2}response = requests.get('https://example.com/search', params=payload)print(response.url)response = requests.get('https://example.com/search', json=payload)Отправка данных (POST)
Заполните пропуски, чтобы отправить данные нового пользователя на сервер в формате JSON.
new_user = {"name": "Alice", "role": "admin"}
url = "https://api.service.com/users"
resp = requests.input1S(url, input2S=new_user)
print(resp.status_code)Запрос с заголовками (Headers)
Расставьте строки кода в правильном порядке, чтобы выполнить запрос с API-ключом в заголовках.
url = 'https://api.secret.com/data'token = 'my_secret_token'headers = {'Authorization': f'Bearer {token}'}response = requests.get(url, headers=headers)if response.ok: print("Data received")Анализ свойства response.ok
Свойство `.ok` возвращает `True`, если статус-код от 200 до 299. Что выведет этот код? Введите слово.
# Эмуляция ответа с ошибкой
class MockResponse:
status_code = 404
ok = False
response = MockResponse()
if response.ok:
print("Found")
else:
print("Lost")