Коротко: API — это способ одной программы попросить что-то у другой. Ребёнку это нужно, как только он захочет взять курс валют, погоду или картинку из интернета в свой проект.
API — это способ одной программы попросить данные у другой. В курсе Python эта тема стоит на ступени «Игры и боты» для 10–14 лет: библиотека requests, формат JSON и получение данных из открытых источников — погоды, курсов валют.
Выглядит буднично, а на деле это поворотный момент: до этой темы программа ребёнка знала только то, что ребёнок в неё вписал.
Чем программа без API отличается от программы с ним
Вся предыдущая работа — переменные, циклы, функции, файлы — это замкнутый мир. Калькулятор считает то, что ввели. Игра работает по правилам, которые прописали.
С API программа впервые узнаёт что-то о внешнем мире. Скрипт, показывающий сегодняшнюю погоду, делает то, что ребёнок не мог заложить заранее: завтра он покажет другое, и это будет правдой.
С этого момента становится понятно, как устроены приложения в телефоне. Они почти ничего не хранят в себе — они спрашивают.
Что происходит за ту секунду, пока программа ждёт
Ребёнок пишет одну строку — запрос за погодой. Нажимает запуск. Секунда тишины, и в консоли появляются цифры.
За эту секунду успевает многое. Программа находит, по какому адресу живёт сервис. Открывает с ним соединение. Говорит, что именно ей нужно: город, единицы измерения, иногда ключ доступа. Сервер ищет данные, пакует их в текст и отправляет назад. Программа этот текст разбирает и достаёт из него нужное число.
Мы проходим эту цепочку медленно, по шагу, и не ради теории. Когда через неделю что-то перестанет работать, подросток должен понимать, где искать: адрес не тот, параметр забыл, интернет лёг или сервис ответил отказом.
Откуда берём API на занятии
Начинаем с тех, что работают без регистрации: время в разных городах, курсы валют, справочник стран. Это удобно тем, что первый запрос выполняется сразу, без почты, паролей и ожидания подтверждения.
Дальше подключаем сервис с ключом — обычно погоду. Здесь появляется новая мысль: доступ персональный, ключ принадлежит тебе, и обращаться с ним надо как с паролем. Та же мысль потом возвращается в теме про бота и в теме про Git.
Данные намеренно берём те, которые подросток может проверить глазами. Если программа говорит, что в Днепре сейчас минус сорок, ошибку видно без преподавателя.
JSON: формат, в котором приходят данные
Ответ от сервера приходит не готовым текстом, а структурой: вложенные пары «название — значение». Это JSON, и в теме его разбирают отдельно.
Для ребёнка полезно здесь другое, нежели синтаксис. Он видит, что данные бывают упорядочены, и чтобы достать из них нужное, надо понять устройство, а не угадывать. Навык читать чужую структуру понадобится дальше везде — в базах данных, в настройках, в файлах конфигурации.
Где подросток видит API вне курса
Везде, просто без названия. Приложение погоды на телефоне не имеет собственной метеостанции — оно спрашивает чужой сервис. Кнопка «войти через Google» на сайте — тоже запрос к чужому сервису. Курс валют в банковском приложении приходит оттуда же.
Момент, когда это доходит, обычно один и тот же: подросток запускает свой скрипт, видит ту же цифру, что и в телефоне, и понимает, что приложение делает ровно то, что он только что написал в десяти строках. После этого слово «API» перестаёт быть аббревиатурой из видеоурока.
Сколько это занимает в программе
Тема пятая из тринадцати на ступени «Игры и боты» — то есть примерно треть пути. Ставим её после файлов и обработки ошибок намеренно: чтобы к первому запросу ребёнок уже умел сохранять полученное на диск и не пугался красного текста в консоли.
Дальше API не исчезает. Бот работает через него. Подключение языковой модели — тоже запрос к чужому сервису, просто сложнее. На старшей ступени подросток переходит на другую сторону и пишет собственный API на Flask — тот, к которому будут обращаться уже его программы.
Три цифры, которые надо уметь читать
Сервер отвечает не только данными, но и кодом — коротким числом, которое говорит, как всё прошло.
200 — порядок, данные внутри. 404 — по этому адресу ничего нет, чаще всего ошибка в самом запросе. 429 — запросов слишком много, сервис просит подождать.
Последний код открывает отдельный разговор. У большинства бесплатных сервисов есть лимит: столько-то обращений в минуту или в сутки. Первая же программа с циклом, который дёргает сервер сто раз подряд, в этот лимит упирается. Отсюда естественно вырастает мысль о том, что полученные данные стоит сохранить у себя, а не спрашивать одно и то же каждую минуту.
Что ломается чаще всего
Три вещи, и ни одна из них не про синтаксис.
Изменилась структура ответа. Сервис обновился, поле переехало на уровень глубже — и программа, работавшая вчера, сегодня падает. Это нормальная часть работы с чужими данными, и подросток впервые сталкивается с тем, что код может сломаться сам, без единой правки.
Нет интернета. Программа ждёт и зависает. Здесь пригождается тема, пройденная раньше: оборачиваем запрос в try и показываем человеку понятное сообщение вместо красной стены текста.
Ключ протух. У бесплатных ключей часто есть срок действия. Ответ приходит, но вместо данных — отказ. Читать такой ответ тоже надо уметь.
Куда эта тема ведёт дальше
Сразу после API в программе идут три темы Pygame, а затем Telegram-боты на aiogram. И бот — это, по сути, тоже работа с API: программа обращается к сервису Telegram и отвечает на то, что пришло.
Ещё дальше — подключение модели ИИ через OpenAI API. Для ребёнка, который уже достал погоду из открытого источника, это не магия, а знакомый механизм: отправили запрос, получили ответ, обработали.
На старшей ступени тема вырастает в собственный веб-API на Flask — то есть подросток уже не только запрашивает чужие сервисы, но и делает свой, к которому могут обращаться другие.
Нужны ли платные ключи для учебных заданий?
Для темы про API берут открытые источники — погода, курсы валют. Платные сервисы появляются позже и отдельно, уже осознанно.
Что делать, если сервис не отвечает?
Это нормальная ситуация, и именно поэтому перед API в программе стоит тема об обработке ошибок: try/except, собственные исключения. Работа с внешним миром означает, что что-то может пойти не так — и код должен это предусматривать.
Безопасно ли давать ребёнку доступ к внешним сервисам?
Запросы идут к публичным источникам и не требуют личных данных. Отдельно в программе есть тема о переменных окружения — ключи доступа не пишут в код и не выкладывают в репозиторий.
Коротко
Тема API — момент, когда учебные упражнения превращаются в программы, делающие что-то настоящее. Она короткая по объёму, но именно после неё у ребёнка появляются проекты, которыми пользуются другие люди.
Что из этого выходит за первый год, разобрано отдельно: проекты за первый год обучения. Как тема ИИ разворачивается на всех трёх ступенях — здесь.