Что такое API: официант между тобой и кухней
Весь этот курс называется “REST API”. Но прежде чем разбирать слово “REST”, давайте честно ответим на более простой вопрос: что вообще такое “API”? Это слово вы будете встречать в каждом уроке, в каждой вакансии Data Engineer и в каждой документации. Поэтому в этом самом первом уроке мы определим его с нуля — без TCP, без HTTP, без единой технической детали. Только идея.
К концу урока вы будете уметь объяснить словами “что такое API”, “кто такой клиент” и “кто такой сервер” — так, чтобы понял даже человек, ни разу не писавший код.
Аналогия: ресторан
Представьте, что вы пришли в ресторан. Вы голодны, вы хотите стейк. Но вы же не идёте сами на кухню жарить мясо? Кухня закрыта для гостей. Там свои правила, своё оборудование, свой повар, и посторонним туда нельзя.
Вместо этого к вам подходит официант. У официанта есть меню — список того, что можно заказать. Вы говорите: “Стейк, средней прожарки, пожалуйста”. Официант записывает заказ, уходит на кухню, передаёт его повару. Повар готовит. Через двадцать минут официант возвращается и приносит вам тарелку со стейком.
Заметьте, что произошло. Вы получили то, что хотели, но при этом:
- вы не заходили на кухню;
- вы не знаете, на какой сковороде жарили, какой марки плита, как зовут повара;
- вы просто сделали понятный запрос по меню — и получили понятный результат.
Официант — это посредник между вами и кухней. Он принимает ваши запросы в понятном формате (по меню) и приносит ответы. Вот этот официант и есть API.
Расшифровка: API простыми словами
API расшифровывается как Application Programming Interface — “интерфейс программирования приложений”. Звучит сложно, поэтому давайте разберём по словам и сразу переведём на человеческий.
Слово интерфейс здесь — ключевое. Интерфейс — это точка соприкосновения, через которую две стороны взаимодействуют, не заглядывая внутрь друг друга. У микроволновки есть интерфейс — кнопки и экран. Вы нажимаете “30 секунд, старт”, и еда греется. Вы не знаете, как именно магнетрон излучает волны — вам и не нужно. Кнопки — это интерфейс между вами и сложной электроникой.
Так вот:
API — это набор правил, по которым одна программа просит что-то у другой программы и получает ответ. Это “меню” и “официант” в мире программ. Программа A не лезет внутрь программы B. Она просто делает запрос по заранее известным правилам — и получает ответ.
Не пугайтесь длинной расшифровки “Application Programming Interface”. На практике слово API почти всегда означает простое: “способ одной программе обратиться к другой и получить данные или результат”. Держите в голове образ официанта — этого достаточно на старте.
Кто такой клиент и кто такой сервер
В нашем ресторане было две стороны: вы (тот, кто просит) и кухня (та, что выполняет). В мире программ у этих двух ролей есть имена.
Клиент — это тот, кто отправляет запрос. В ресторане клиент — это вы, гость за столиком. В мире программ клиент — это, например, ваш браузер, мобильное приложение или Python-скрипт, который вы напишете. Клиент чего-то хочет и просит это.
Сервер — это тот, кто принимает запрос, выполняет работу и отправляет ответ. В ресторане сервер — это кухня. В мире программ сервер — это чужой компьютер где-то в интернете, на котором запущена программа, готовая отвечать на запросы. Например, у GitHub есть сервер, который умеет отдавать информацию о пользователях. У сервиса погоды есть сервер, который умеет отдавать прогноз.
Слово “сервер” происходит от английского to serve — “обслуживать, подавать”. Сервер буквально подаёт вам данные, как официант подаёт блюдо. А API — это правила, по которым клиент и сервер договариваются общаться.
КЛИЕНТ API (правила) СЕРВЕР
(ваш скрипт) --- запрос -----> -----> (компьютер GitHub)
<-- ответ ------- <-----
Одна важная мысль: клиент и сервер — это роли, а не “тип компьютера”. Ваш ноутбук обычно клиент (он просит). Но если вы запустите на нём программу, которая принимает запросы, ваш ноутбук в этот момент становится сервером. Роль определяется тем, кто просит, а кто отвечает в конкретном разговоре.
Зачем вообще нужны API
Может возникнуть вопрос: зачем эти посредники? Почему программы не берут данные друг у друга напрямую?
По той же причине, по которой вас не пускают на кухню ресторана:
- Безопасность. Кухня (сервер) не хочет, чтобы посторонние трогали её оборудование и продукты. API пускает вас только к тому, что разрешено в “меню”, и не дальше.
- Простота. Вам не нужно знать, как устроена кухня. Вы знаете меню — и этого хватает. Программе-клиенту не нужно знать, как сервер хранит данные, на каком языке написан, какая у него база. Достаточно знать правила запроса.
- Независимость. Кухня может поменять плиту, нанять нового повара, переставить холодильник — для вас как гостя ничего не изменится, пока меню прежнее. Сервер может полностью переписать свой код — клиент продолжит работать, пока правила API не меняются.
Для будущего Data Engineer это особенно важно: ваша ежедневная работа — забирать данные из чужих систем (банков, маркетплейсов, сервисов аналитики). Вы почти никогда не получаете прямой доступ к их базам данных. Вы получаете API — “меню”, по которому можно спросить нужные данные. Умение читать это меню и делать правильные запросы — одна из базовых профессиональных навыков в этой роли.
Когда в вакансии или документации вы видите фразу “интеграция через API” — мысленно переводите её так: “мы общаемся с чужой системой через официанта, по заранее оговорённому меню, не залезая к ней внутрь”. Это снимает большую часть страха перед словом.
Примеры API из жизни
API окружают вас, даже если вы об этом не думали:
- Приложение погоды на телефоне не “знает” погоду само. Оно спрашивает её у API метеослужбы и показывает ответ.
- Кнопка “Войти через Google” на сайте работает через API Google: сайт-клиент спрашивает у сервера Google “это правда ваш пользователь?” и получает ответ.
- Когда таксопарк показывает машины на карте, приложение-клиент спрашивает у сервера через API “где сейчас свободные машины рядом?” — и рисует ответ на карте.
Во всех случаях схема одна: клиент делает понятный запрос -> сервер выполняет работу -> сервер возвращает ответ. Меню (API) заранее определяет, что именно можно спросить и в каком виде придёт ответ.
Попробуй сам
Кода тут пока не будет — только мышление. Это упражнение разминает главную интуицию курса.
-
Возьмите любое приложение на телефоне, которое показывает данные из интернета (погода, новости, курс валют, доставка еды). Спросите себя: где здесь клиент, а где сервер? Что именно “просит” приложение и что ему “приносят” в ответ?
-
Опишите своими словами, без терминов, как работает банкомат через аналогию с рестораном. Кто клиент, кто сервер, что играет роль “меню”, что — “официанта”? (Подсказка: вы — клиент, банк — сервер, экран с кнопками — меню.)
-
Объясните вслух, как будто другу: “API — это…”. Если получилось объяснить без слов TCP, HTTP и “протокол” — вы поняли урок. Эти технические слова появятся позже, и они лягут поверх этой простой идеи.