Что такое API
![]()
Наверняка вы слышали что-то про АРI. Эта аббревиатура расшифровывается как Application Programming Interface, что в переводе на русский — Программный Интерфейс Приложения. Термин популярный, но непонятный. Даже после его расшифровки. В этой статье проведем краткий ликбез по API и выясним, что он собой представляет, как работает и в принципе зачем он нужен.
Что такое API – почему API называют интерфейсом
С расшифровкой аббревиатуры мы уже определились, теперь объясним простым языком, что же такое АРI — это набор правил и способов, по которым различные программы “общаются” между собой и обмениваются данными. Эти взаимодействия происходят с помощью классов, методов, структур, функций, констант одной программы, к которой обращаются другие. По сути, это и есть принцип работы API.
Почему же интерфейс? Если говорить простыми словами, то интерфейс — это некая прослойка между приложением А и приложением Б. Именно в ней происходят процессы, позволяющие этим приложениям обмениваться информацией и выполнять ряд функций, связанный с обеими сторонами. При этом внутреннее строение программы скрывается.
Эти интерфейсы упрощают работу пользователям и программистами. Первые просто не задумываются, что же стоит за привычными функциями их гаджетов, а разработчикам не нужно изучать код других программистов, чтобы подключить чужой продукт к своему.
Чтобы стало понятнее, приведем банальный пример: вы решили купить билет в кино, используя банковскую карту. Терминал, обращается к API вашего банка, отправляя запрос на оплату. Некий внутренний процесс, без которого сложно было бы связать работу двух приложений.
Зачем нужен API?
Можно отметить две основные функции API, которые делают его столь востребованным у разработчиков и пользователей.
- Инкапсуляция упрощает жизнь всем разработчикам, так как отдельные компоненты приложения становятся абстрактными. То есть, для создания нового ПО нет необходимости лезть в логику низкоуровневых функций.
- На АРI можно неплохо заработать. Например, сервисы, которые предоставляют информацию с метеовышек, взимают плату каждый раз, когда осуществляется запрос актуальной погоды, но только если их API используется в сторонних софтах.
Почему API так популярны у программистов
У разработчиков есть особый интерес к АРI. Рассмотрим 4 основные причины столь сильной тяги:
- API ускоряет создание новых продуктов. Говоря проще, программистам не нужно каждый раз изобретать велосипед. Например, можно взять API TenserFlow и внедрить в свое ПО, а не самостоятельно тратить время на разработку системы машинного обучения.
- Упрощает настройку связей между различными сервисами и программами.
- Использование готовых интерфейсов — возможность сэкономить не только время, но и деньги.
- API позволяет вынести в отдельное приложение всю функциональность, которая должна быть защищена. Это снижает вероятность некорректного использования этих функций другими программами. Проще говоря, программный интерфейс увеличивает безопасность разработки.
Набор функций
Опции, доступные при работе с API, зависят от разработчиков. Но в целом, всего тремя пунктами можно описать работу интерфейса и методы взаимодействия с ними:
- данные, которые нужно передать интерфейсу для выполнения определенных функций;
- процесс, который выполняет программа, используя API;
- данные, которые ПО получит на выходе после обработки с помощью API.
Можно сказать, что в итоге мы получаем просто скрытую функцию (или набор) внутри которых происходит некая обработка и выдача передаваемых данных.
Как компании зарабатывают с помощью API
Часто компании, чья деятельность связана с разработкой сложных приложений, предоставляют клиентам доступ к API своих продуктов. Для примера: разработчики видеоредактора могут брать плату за работу с видео на своих серверах. Скрытый процесс предполагает, что по API они принимают от клиентов файлы и инструкции, а по итогу возвращают им готовый ролик.
Популярные социальные сети радостно предоставляют доступ к своим API и через них разработчик может создать игру.
Важно понимать, что эти компании не раскрывают принцип создания своих интерфейсов и для разработчиков они остаются загадкой. Хотя вряд ли их внутреннее строение так важно. Ведь в итоге программистам нужен лишь их функционал.
Примеры API
Мы уже писали, что суть работы API сводится к передаче данных по определенному запросу со стороны клиента или другого приложения. Приведем самые простые примеры API с которыми сталкивался каждый из нас.
Google Календарь
Если вы используете календарь для Android или iOS, наверняка вы в курсе, что их данные можно легко синхронизировать, подключив Apple iCad или Google Calendar. Эти две компании предлагают разработчика АРI, позволяющее подключить календарь к сторонним приложениям.
Что это дает? Пользователь может использовать несколько разных софтов с примерно одинаковой функциональностью. Что позволяет иметь актуальную информацию о всех делах.
Именно АPI позволяет создавать новые события или удалять существующие. Их также можно редактировать и устанавливать в календаре важные напоминания.
Погодное приложение
Сервисы, которыми мы с вами пользуемся для изучения погоды, получают информацию из сторонних источников. При этом есть сервисы, которые взаимодействуют с метеостанциями напрямую, что гарантирует им своевременное обновление текущих погодных условий. Логично, что программисты и разработчики приложений просто покупают эту информацию.
Для упрощения процесса, сервисы, которые напрямую сотрудничают с метеостанциями, разработали собственное API. Оно содержит набор функций, помогающий делать запросы в конкретных местах. Схема передачи информации выглядит так: запросы через приложение отправляются на метеостанцию, а их результат возвращается юзеру тем же путем.
Сервис по заказу авиабилетов
Здесь принцип работы примерно такой, как и с приложениями о погоде. Очевидно, что есть сайты самих авиакомпаний, а есть агрегаторы — сервисы, собирающие информацию в разных авиакомпаниях и предоставляющие ее в едином окне. Чтобы добыть достоверную информацию, разработчики используют сервисы авиакомпаний (они обновляют информацию о наличии билетов в реальном времени).
Кнопки авторизации
Когда вам необходимо зарегистрироваться на каком-либо сайте, вы сразу пытаетесь найти кнопку авторизации через Google, Apple, Facebook и т.д. Авторизация через существующий аккаунт тоже делается через API.
Например, Apple создала набор функций (полностью защищенных), который можно подключить своему проекту и предоставить пользователям доступ к быстрому и безопасному способу авторизации. В этом случае все в плюсе: пользователь не тратит много времени на внесение личных данных, а у владельца ресурса остается доступ к персональным данным нового пользователя.
Навигация на сайтах и в приложениях
Существуют крупные корпорации, которые предлагают качественные картографические данные (Apple, Google, Yandex и др.). Некоторые из них разработали собственное API, позволяющее подключить картографический сервис к сторонним площадкам. Например, компания On-taxi использует Google.
Разработчики приложений под Android подключают к своему сервису доставки еды, такси или трекеров карты Google, а для приложений iOS — Apple Maps.
Как вызывается API – вызов напрямую
Как взаимодействовать с АPI описано в нем самом. Сами разработчики ПО обеспечат вас всей необходимой документацией и расскажут подробнее, что и как работает. Из этого вывод: универсальной инструкции по вызову API — нет.
Рассмотрим вариант вызова напрямую.
1. Система вызывает функции внутри себя
Мы уже обозначили, что программы, вернее их части, общаются между собой на уровне АРI. И это самый простой в использовании способ, ведь автор программного интерфейса и потребитель — программисты, разработчики. Это значит, что проблем с неактуальной документацией нет. Вернее она есть, но в виде комментариев к коду.
2. Система вызывает метод другой системы
Этот кейс тестировщики тестят в интеграторах. Ну или тестировщики, которые проверяют интеграцию своей системы с чужой. То есть, система, через программный интерфейс дергает какой-то метод другой системы, чтобы получить ее данные, ну или наоборот.
Приведем пример. Допустим вы решили подключить простые подсказки из Дадаты к своему интернет-магазину. Это нужно для того, чтобы пользователь с легкостью вводил адрес доставки. Вы подключили API. Когда пользователь начинает вводить адрес, он видит подсказки. Алгоритм действий прост:
- юзер вводит букву в соответствующем поле вашего интернет-магазина;
- ваш сайт отправляет запрос в подсказки Дадаты по API;
- Дадата возвращает ответ;
- ваш сайт обрабатывает его и выдает верный результат.
В итоге шагов получилось немало, но пользователь не видит этого взаимодействия, только результат.
3. Человек вызывает метод
Здесь может быть несколько причин:
- с целью ускорить работу;
- чтобы понять, где возник баг (например, на сервере или у клиента);
- для проверки логики, без докруток фронта.
Логично, что если система представляет АPI, то куда проще дергать его, чем делать то же, но через графический интерфейс.
4. Автотесты дергают методы
Существует некая пирамида автоматизации. Она состоит из следующих пунктов:
- GUI-тесты. Это честный тест, где робот делает все, что делал бы пользователь. Например, открывает браузер и тыкает на кнопки.
- API-тесты. Здесь происходит все то же самое, только без браузера. То есть, вы просто подаете данные на вход и проверяете их на выходе. Например, можно внести итоговый ответ в таблицу Excel, и пусть робот выверяет ее, правильно ли заполняются данные? Это позволит быстрее локализовать проблему.
- Unit-тесты. В этом случае мы проверяем каждую функцию отдельно.
Косвенный вызов API
Говоря о косвенном вызове, то это процесс, который происходит при участии посредника. Например, другой функции или другого API. Для понимания: вы нажимаете кнопку “Обновить”. Для пользователя ничего не происходит сверхъестественного, но на самом деле он уже взаимодействует с API браузера. Но только делается это не напрямую, а через графический интерфейс.
Преимущества и недостатки API
У рассматриваемой нами технологии есть как минусы, так и плюсы. Начнем с недостатков.
- API может работать некорректно. На рынке можно встретить достаточное количество плохо работающих (или в принципе не работающих) интерфейсов. Это связано с тем, что часто API создают не узконаправленные специалисты.
- Так как API рассчитано для решения стандартных задач он не подходит для внедрения специфических решений.
- Внести изменение внутри API очень сложно.
- В настоящее время отсутствуют стандарты касательно API, что ведет к возникновению сложностей при взаимодействии с ним.
- Исходный код не доступен к просмотру.
Теперь перейдет к положительным сторонам данного программного интерфейса:
- Ускоряет процесс разработки.
- Возможность добавить на сайт сторонние функции.
- Интеграция сторонних решений происходит в минимальные сроки.
- Уязвимость при работе с чужими компонентами снижается.
- Возможность внедрить безопасные транзакции на сайт или в приложение.
- Агрегация данных из множества веб-источников.
Если вам необходимо внедрить на сайт новую фичу, не спешите искать разработчика. Возможно проще будет найти готовое решение в виде API!?
Особенности современного API
Какие же тенденции наблюдаются в развитии программніх интерфейсов? Рассмотрим подробнее:
- Сейчас интерфейс рассматривают не как набор состоящий из строк кода, а как отдельно существующий продукт. Он направлен на особую аудиторию. На программистов. Это значит, что API — это программа с предсказуемым выпуском новых версий.
- Все современные интерфейсы пытаются прийти к общему знаменателю в вопросе форматов.
- Отношение к безопасности функций АPI стало основным приоритетом.
- Разработка программных интерфейсов схожа на создание приложения: идея, тестирование, разработка, контроль версий и т.д.
Вопросы и ответы
Можно ли создать своё собственное API?
Да, разработчики могут создавать собственные API, предоставляя доступ к своим данным и функциям через определенные точки доступа. Это особенно полезно, если вы хотите разделить свой функционал с другими разработчиками или сервисами.
В каких сферах применяются API?
API используются в различных сферах, включая веб-разработку (например, для интеграции соцсетей), мобильные приложения (для доступа к данным и сервисам), финансы (для обмена данными с банками), медицину (для обмена медицинской информацией) и др.







