Что такое API и как это работает

API — это интерфейс программирования приложения. Эта аббревиатура используется везде — от инструментов командной строки до приложений на Ruby on Rails.

API — это готовый код, который упрощает жизнь программистам. Разработчик может использовать готовый код API, чтобы писать приложение. Он помогает организовать код и сделать так, чтобы компоненты ПО могли использоваться неоднократно.

Рассказываем об API и как его применять

Подробнее об API

API — это спецификация возможных взаимодействий с компонентом ПО. Например, если бы машина была компонентом ПО, в ее API содержалась бы информация о том, что машина может ускоряться, тормозить и включать радио. Ее API также бы включало информацию о том, как ускоряться.

API работает на 3 уровнях:

Приложение: Это приложения, которые вы используете на смартфоне, или ПО.
Програмирование: Программисты используют API, чтобы писать код.
Интерфейс: Как вы взаимодействуете с приложением.

Пример: Представьте официанта в ресторане. Вы — клиент, выбираете заказ в меню. Кухня — исполнитель вашего заказа.

Вам нужен посредник, который сообщит о заказе на кухню и принесет вам еду на стол. Им не может быть шеф-повар, потому что он готовит на кухне. Вам нужен кто-то, кто свяжет клиента и шеф-повара. И тут в игру входит официант — API.

Официант принимает ваш заказ, приносит его на кухню, говорит, что вы заказали. Затем доставляет ответ, или еду вам. Более того, если все сделано правильно, ваш заказ не упадет.

Виды API

Публичные API выпускаются такими компаниями, как Slack и Shopify, в надежде на то, что разработчики будут их использовать на своих платформах. Компании делятся набором вводных параметров, которые разработчики используют, чтобы достичь какого-то результата.

Публичное API можно использовать без проблем — доступ к документации можно получить без проблем.

Приватные API используются внутри компании. Если у компании много программных продуктов, приватное API используется, чтобы программы разговаривали между собой. Компоненты API могут меняться по желанию компании, тогда как изменения в публичном API может вызвать отчаянные протесты.

Давайте рассмотрим Java API и Twitter API в качестве примеров. Эти API относятся к виду публичных.

Java API

Java API — библиотека компонентов ПО, доступных в готовом виде всем, кто установил Java Development Kit. Эти компоненты выполняют общие задачи и повышают производительность, так как программистам не нужно писать код с нуля каждый раз.

Один из базовых компонентов в ПО называется List, или Список. Этот компонент следит за списком сущностей. Java API определяет, что вы можете делать со списком: добавлять сущности, сортировать их в списке, определять, входит ли сущность в список. API также уточняет, как выполнять эти действия. Чтобы отсортировать список, вам нужно уточнить, какую сортировку вы хотите: по алфавиту, количественно, по цвету.

Пример базового компонента API Java
Документация API OpenJDK для метода сортировки Списка. Сравнитель — это параметр, который определяет сортировку списка

Twitter API

Twitter API, вместе со многими другими API в веб-версии, — пример REST API. REST API — это API, которое использует архитектурный стиль, основанный на передаче состояния представления. REST — это стиль строительных систем, который обеспечивает гибкое общение и отображение информации в вебе.

В REST API ресурс может быть чем угодно.

Примеры ресурсов: пользователь, список твитов, результаты поиска твитов. К каждому из этих ресурсов можно обращаться по его идентификатору. В случае REST API в веб-версии — это обычно URL.

Когда приложение запрашивает ресурс через идентификатор, API отдает текущее представление ресурса приложению в подходящем для него формате: в JPEG, HTML-странице или JSON.

Одна из отличительных характеристик REST — это то, что API отправляет данные приложению, которое их запрашивает. Несмотря на то, что это дает гибкость приложению, эта гибкость достигается ценой снижения эффективности. Пересылать данные в вебе для обработки — довольно медленный процесс.

Тестируйте VPS-сервер первые 30 дней за $1
  • Память: 4096 МБ
  • Диск: 50 ГБ SSD
  • Трафик: Безлимит
  • CPU: 2 ядра

API как уровень абстракции

Когда речь идет о ПО, API нужно везде. API идет рука об руку с одним из самых фундаментальных концептов в компьютерной науке — абстракцией.

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

Пример такой абстракции — программируемая облачная кнопка Amazon Dash Button. Ее можно настроить, чтобы подсчитывать или отслеживать предметы, звонки или сообщения, чтобы включать и выключать определенные действия

Облачная кнопка Amazon
Можно выбрать внешний вид облачной кнопки Amazon

Вы заказываете кнопку Dash Button на Amazon и используете приложение на смартфоне, чтобы подключить кнопку к вашей сети Wi-Fi, учетной записи на Amazon и например, к вашей любимой марке бумажных полотенец.

Затем когда вы захотите заказать бумажные полотенца, жмете на кнопку. Она подключится к интернету и отправит сообщение, чтобы заказать их из вашей учетной записи Amazon. Через несколько дней вам доставят бумажные полотенца.

Как и API, Dash Button — это простой интерфейс, который прячет свою сложность от пользователя. Идентификатор продукта, который вы заказали, должен быть извлечен из базы данных. Ваш адрес доставки должен быть извлечен из вашей учетки, ближайший к вам склад с полотенцами нужно уведомить о заказе, а еще отгрузить нужный продукт со склада и упаковать. Затем товар нужно доставить по маршруту вместе с другими посылками.

Теперь представьте, что вам как клиенту пришлось бы координировать всё это.
Вы бы никогда не заказали бумажные полотенца, потому что это слишком трудозатратно.

К счастью, все эти муки спрятаны от вас. За тем, чтобы вам доставили полотенца, стоит длинная связанная цепь компьютерных систем и координации людей. А вам нужно только нажать на кнопку.

Что нужно запомнить об API

  • Помогает разработчикам быстрее писать код
  • Бывает публичным и приватным
  • Делает сложные операции простыми для клиентов

Источники: статьи в издании InfoWorld и SproutSocial

Валерия

Руковожу контент-направлением, работаю в сфере маркетинга и редактуры 4 года.