Что такое API
ProQuality CommunityДобрый день, этой статьёй мы открываем цикл об API. В нашей первой статье мы рассмотрим что такое API, зачем он нужен и какие виды API бывают.
Начнём с того, что понимание API в современном мире разработки жизненно необходимо, т.к. монолитная инфраструктура приложения осталась в прошлом, уступив место модульной и распределённой альтернативам. Приложения строятся на независимых, многократно используемых микросервисах. Компании стали разрабатывать сервисы, которыми пользуются разрабочики как готовыми решениями для ускорения процесса разработки продукта.

Согласно определению в Википедии, API (application programming interface) - это интерфейс, который определяет взаимодействие между несколькими посредниками, в роли которых могут выступать программы и(или) устройства. Он определяет типы запросов, которые могут быть сделаны, как их сделать, какой формат данных следует использовать, конвенции которым следовать и т.д. API может быть разработан для определённых целей, специфичным для какого-то компонента или спроектированным на основе отраслевого стандарта для обеспечения взаимодействия. При этом от пользователя скрыто устройство этого интерфейса, позволяя использовать API отдельно от реализации, строить модульные программы используя различные API. API позволяет общаться между собой различным цифровым устройствам, программам, серверам данных, и это сейчас основа многих сервисов которые мы используем в повседневной жизни.
Использование API
API используется для:
· работы настольных, мобильных и веб приложений;
· подключения устройств к интернету (фитнес трекеры, камеры, сенсоры...);
· для передачи информации между устройствами, системами, приложениями;
· интеграции разных систем;
· упрощения разработки.
Давайте рассмотрим пример работы API в реальной жизни: представьте что вы посетитель ресторана, к вам подходит официант, вы делаете заказ, официант отдаёт его на кухню и после готовности приносит его вам.

API добавляет и(или) улучшает функционал системы. Например, компания по доставке еды, может использовать API геолокации для автоматической отправки нотификации когда курьер подъезжает к вашему дому.
API помогает интегрировать внутренние и внешние системы: Например, вы хотите подключить CRM заказчика к вашей автоматической маркетинговой системе, чтобы при добавлении нового пользователя ему автоматически отправлялось письмо с различного рода предложениями.
API ускоряет разработку приложений: API позволяет разработчикам строить приложение как микросервисы, а не большой монолит. Разделение приложения на части, позволяет быстрее делать какой-то функционал, проходить код ревью, тестировать его. Также некоторые части приложения могут разрабатываться параллельно, например фронтенд и бекенд.
API может снизить стоимость разработки: разработчики могут создавать переиспользуемые компоненты. Например, бэкенед разработчики создали сервис предоставляющий информацию о пользователе. Этим сервисом может пользоваться фронтенд разработчики для отображения информации на UI в личном кабинете пользователя, может пользоваться отдел маркетинга для отслеживания статуса подписки, рассылки новых предложений и т.п.
API помогает улучшить тестирование системы. Тут мы можем вспомнить тестовую пирамиду и как делятся тесты на UI, API и юнит тесты. API тесты позволяют быстро проверить функционал отдельных компонентов, также с помощью них можно проводить тестирование безопасности и производительности, интегрировать их в CI/CD и настроить quality gates.
Виды API
· API для мультимедиа (DirectX for Microsoft Windows, Simple DirectMedia Layer (SDL))
· API операционных систем (Linux Kernel API, Windows API, POSIX)
· Языки программирования, библиотеки, фреймворки имеют свой API.
· Наиболее обсуждаемые в наши дни, это конечно же Web APIs.
Разделить API на типы можно разными способами.
По уровню доступа API могут быть:
· приватные (внутренние) - используются только внутри организации и не распространяются за её пределы.
· партнёрские - открыты для использования определёнными организациями-партнёрами между которыми заключено соглашение. Такие API часто используются в приложениях типа B2B, B2C. Например: Salesforce, SAP.
· публичные (внешние) - могут использовать любым заинтересованным человеком, без заключения каких либо контрактов с поставщиком этих API. Цель их привлечь как можно больше потребителей и сделать эти API удобными для использования. Например очень популярные сервисы от Google - translate, maps. Например, здесь можно посмотреть самые популярные публичные API.
Ещё немного информации по данным типам API можно найти тут.
API можно разделить по архитектурному стилю, вот наиболее распространённые из них:
REST API (REpresentational State Transfer) - клиент-серверная архитектура следующая некоторым принципам.
Webhooks - отправляют автоматические сообщения из одной системы в другую по наступлению какого-то события. (например webhook'и на Jenkins запускают джобу при новых изменениях в ветке)
SOAP API (Simple Object Access Protocol) - наиболее структурированный и стандартизированный протокол. Использует XML формат для передачи информации.
WebSocket API - протокол компьютерной связи, представляет собой полнодуплексный канал связи по TCP соединению. Он предоставляет серверам стандартный протокол обмена информацией.
GraphQL API (Graph Query Language) - сначала Facebook сделал этот API как внутренний, позже его сделали публичным. Он помогает запрашивать информацию у других API и придавать данным такую форму, какую запрашивает клиент.
В следующей статье поговорим с вами подробнее о структуре запросов в SOAP и REST.