Простыми словами про API приложений


В мире современных приложений взаимодействие между несколькими системами стало неотъемлемой частью успешного бизнеса. Один из ключевых инструментов, позволяющий ПО оставаться актуальным, масштабируемым и инновационным  – это API.

API – программный интерфейс, который позволяет двум приложениям обмениваться данными друг с другом. Самым наглядным примером является взаимодействие мобильного приложения / сайта (клиента) и сервера. Мобильное приложение запрашивает данные у сервера, чтобы отобразить на экране актуальную информацию пользователям. Для этого обычно используют Web API протоколы.

На пчелах про API – ассоциация, которую стоит запомнить

Есть улей, в котором пчелы делают мёд. Чтобы сделать мёд, им нужен нектар. Без нектара мёд не получится.

Получается, чтобы система "Улей" работала и давала пользователям результат в виде мёда, нужно подгружать в неё нектар. Без нектара пользователи системы "Улей" мёд не получат и будут грустить.

Системе "Улей" нужны данные "Нектар", чтобы показывать пользователям "Мёд".

Система "Улей" (мобильное приложение) использует данные "Нектар" (данные из Базы Данных сервера), чтобы давать пользователям необходимую функциональность "Мёд". За работу этой системы отвечают пчёлы, которые организуют интерфейс взаимодействия между улеем и цветами (API), из которых можно добыть нектар.

Клиентская пчела (из улея) отправляет запрос серверной пчеле (которая в цветах), чтобы та подготовила данные (нектар). На сервере собираются данные из цветов в определенную структуру и возвращаются в ответе пчеле из улея. Теперь пчелы в улее могут делать мёд и давать его пользователям.

Еще ближе к реальности (если делаем мобильное приложение с расписанием рейсов):

Мобильное приложение (улей) дожно показать нам расписание авиарейсов (мёд). Для этого оно делает запрос на сервер (система "Цветы"), чтобы получить данные из него (нектар). На сервере выполняются сложные алгоритмы и сбор данных по БД в определенную структуру. Как только данные подготовлены они возвращаются на клиента, в мобильное приложение (улей). Мобильное приложение обрабатывает данные, размещает их определенным образом в пользовательском интерфейсе (UI). После этого счастливые пользователи видят расписание рейсов (мёд). Возможность получения запросов, их обработки, и возврата ответов, обеспечивает сервер, за счет реализации API-методов.

Итого, API это три ключевых действия:

1. Request - клиент делает вызов API-метода, чтобы получить данные. Работа кода в мобильном приложении это аналог пчелы из улея, которая делает запрос.

2. Receive - сервер получает запрос, обрабатывает его, то есть собирает данные. Работа кода на сервере это аналог пчелы в цветах, которая собирает нектар.

3. Response - собранные данные в определенном формате и структуре возвращаются тому клиенту, который их запросил (в случае с REST API это JSON). Серверная пчела передает результаты своей работы мобильной пчеле. Код мобильного приложения использует эти данные, чтобы показать пользователям то, что они хотят увидеть на экране.

При этом с одних и тех же цветов данные могут запрашивать разные улеи :) Можно дальше развивать эту тему с пчелами, но усложнять не будем.

Такая вот ассоциация. А теперь предлагаю перейти к техническим деталям.

Идея про пчелок (оригинал)

Что такое API

API расшифровывается как "Интерфейс программирования приложения" (Application Programming Interface). Представляет собой набор протоколов, позволяющих технологическим продуктам взаимодействовать друг с другом.

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

Разберём на примере. Представьте, что вы пришли в ресторан. Чтобы сделать заказ, вы подзываете официанта. Официант принимает у вас заказ и передаёт его на кухню. Кухня готовит ваш заказ и отдаёт его официанту. И вуаля – ваш заказ у вас на столе. Bon Appetit!

Во всей это истории вы – это система-клиент, кухня – это система-сервер, а официант, как вы уже догадались – API.

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


Классификация API

С точки зрения архитектуры и работы с данными, существует несколько основных видов API:

  • REST API позволяет выполнять операции CRUD (create, read, update, delete) между клиентом и сервером. Он предоставляет несколько конечных точек API для манипуляции данными. Основан на HTTP. Основные форматы обмена данными: JSON, XML. Это набор архитектурных принципов. REST-сервис должен иметь определенные характеристики, такие как простые интерфейсы, которые представляют ресурсы, легко идентифицируемые в запросе.

  • GraphQL API – это язык запросов, который позволяет клиентам запрашивать только конкретные данные, необходимые им с сервера. Таким образом, исключаются проблемы недостаточной и избыточной загрузки данных, которые, например, могут возникать при работе с REST API.

  • SOAP API по сути своей любой веб-сервис, соответствующий спецификации SOAP, является SOAP веб-сервисом. SOAP (Simple Object Access Protocol) – это протокол, который использует XML в качестве формата для передачи данных. Его основная функция заключается в определении структуры сообщений и методов коммуникации. Он также использует WSDL (Web Service Definition Language) в машинночитаемом документе для описания своего интерфейса.

  • gRPC API – это высокопроизводительный фреймворк для удаленного вызова процедур (RPC), разработанный компанией Google. Вместо того чтобы использовать традиционные методы связи, такие как HTTP, gRPC API использует специальный протокол передачи данных, называемый Protocol Buffers (protobuf). Этот протокол позволяет оптимизировать размер и структуру передаваемых данных, что делает их более компактными и эффективными в передаче.

Полезная картинка, которая помогает понять популярный REST API


В зависимости от доступа к API какой-либо системы, выделяют три типа:

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

  • Закрытый API или внутренний API, внутренний интерфейс приложения, предоставляет доступ только для внутренних систем и сотрудников компании.

  • Партнёрский API предоставляет доступ к определённым функциям и данным для партнёров или сторонних разработчиков.


Что такое вебхуки: API с использованием вебхуков (webhook)

Существует еще один тип API – API с использованием вебхуков (webhook). 

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

Распространенный пример использования вебхуков – платежные системы на сайтах (пример: Интернет-магазин). При взаимодействии с платёжной системой, благодаря вебхукам, вам не надо постоянно делать запрос к API, чтобы проверить статус платежа, т.е. был ли произведен платеж или он еще в ожидании оплаты на стороне банковской системы.

Вместо этого вы можете использовать API с вебхуками, чтобы получать уведомление каждый раз, когда происходит транзакция. То есть, когда платежная транзакция окончательно завершена и ее статус изменен на окончательный, от платежной системы в вашу (Интернет-магазин) приходит уведомление о смене статуса. Причём вам может приходить сообщение не только об успешной транзакции, но и об ошибке. Удобно, правда?


Подведем итоги

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

Системные аналитики, разработчики и другие IT-специалисты могут использовать знания об API для создания интеграций, управления данными и улучшения функциональности систем, с которыми они работают.


Екатерина Ананьева,
Основатель IT-школы системного анализа 

и проектирования GetAnalyst

Контакты

+7 (499) 686-15-46

*Instagram — запрещенная на территории РФ организация

Практический опыт здесь, 2021-2024

Мы используем файлы cookie, для персонализации сервисов и повышения удобства пользования сайтом. Если вы не согласны на их использование, поменяйте настройки браузера.