Коротко: 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 — момент, когда учебные упражнения превращаются в программы, делающие что-то настоящее. Она короткая по объёму, но именно после неё у ребёнка появляются проекты, которыми пользуются другие люди.

Что из этого выходит за первый год, разобрано отдельно: проекты за первый год обучения. Как тема ИИ разворачивается на всех трёх ступенях — здесь.