Работа с API

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

Тренажер по Python

В этом модуле мы погружаемся в работу с сетью и внешними API (Application Programming Interface). Вы научитесь использовать самую популярную библиотеку Python для HTTP-запросов — requests.

Мы разберем основные методы (GET, POST, DELETE), научимся передавать параметры и заголовки, обрабатывать ответы в формате JSON и реагировать на различные коды состояния сервера. Эти навыки необходимы для взаимодействия с веб-сервисами, получения данных с сайтов и автоматизации сетевых задач.

Задания построены от простого к сложному: от базового импорта библиотеки до написания полноценных запросов с авторизацией. Внимательно читайте описания и подсказки, если возникнут трудности. Удачи в освоении API!

Список тем

Первый шаг: GET-запрос

id: 40150_task1

Для начала работы нужно подключить библиотеку `requests` и выполнить простой GET-запрос к сайту. Заполните пропуски в коде.

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

url = "https://api.github.com"
response = requests.input2S(url)

print(response.status_code)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Методы HTTP и их назначение

id: 40150_task2

В протоколе HTTP разные методы отвечают за разные действия с ресурсами. Сопоставьте метод запроса с его типичным назначением.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Получение данных с сервера
Отправка данных для создания ресурса
Удаление ресурса на сервере
Полное обновление существующего ресурса
requests.get()
requests.post()
requests.delete()
requests.put()
Сообщения
Проверить
Показать подсказку

Классификация кодов ответа (Status Codes)

id: 40150_task3

Сервер возвращает числовые коды, сообщающие о результате запроса. Распределите коды по категориям: Успех, Ошибка клиента и Ошибка сервера.

Перетяните элементы в соответствующие блоки
Успех (2xx)
Ошибка клиента (4xx)
Ошибка сервера (5xx)
200 OK
404 Not Found
500 Internal Server Error
201 Created
403 Forbidden
502 Bad Gateway
Сообщения
Проверить
Показать подсказку

Работа с JSON-ответом

id: 40150_task4

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

Опечатки в коде запроса

id: 40150_task5

Начинающий программист допустил ошибки при написании кода. Найдите и исправьте опечатку в импорте и в вызове метода.

Найдите ошибку и исправьте
import request
response = request.get('https://google.com')
if response.status_code == 200:
    print("Success")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Передача параметров в GET-запросе

id: 40150_task6

Соберите код, который выполняет поиск по сайту. Сначала определите словарь параметров, а затем передайте его в функцию запроса.

Перетяните в правильном порядке строки из одного блока в другой
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)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Отправка данных (POST)

id: 40150_task7

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

Нужно правильно расставить в пропуски предложенные варианты
new_user = {"name": "Alice", "role": "admin"}
url = "https://api.service.com/users"

resp = requests.input1S(url, input2S=new_user)

print(resp.status_code)
post
json
get
data
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Запрос с заголовками (Headers)

id: 40150_task8

Расставьте строки кода в правильном порядке, чтобы выполнить запрос с 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

id: 40150_task9

Свойство `.ok` возвращает `True`, если статус-код от 200 до 299. Что выведет этот код? Введите слово.

Что должно получиться?
# Эмуляция ответа с ошибкой
class MockResponse:
    status_code = 404
    ok = False

response = MockResponse()

if response.ok:
    print("Found")
else:
    print("Lost")
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру