Программный интерфейс приложения¶
Программный интерфейс приложения (API, от англ. Application Programming Interface) — это набор правил, протоколов и инструментов, определяющих способ взаимодействия между программными компонентами. API описывает, какие запросы может отправить одна программа другой, в каком формате данные передаются и какие ответы ожидаются. В широком смысле API — это контракт между разработчиками, определяющий, как использовать программный модуль без знания его внутренней реализации.
¶История
Понятие программного интерфейса возникло в 1960-х годах вместе с развитием операционных систем и библиотек программирования. Один из ранних примеров — системные вызовы IBM OS/360, предоставлявшие приложениям доступ к аппаратным ресурсам. В 1970-е годы API стали стандартным механизмом взаимодействия с библиотеками C в UNIX-системах.
Существенный толчок развитию API дало распространение веб-технологий в 1990-е годы. Появление HTTP и HTML сделало возможным создание веб-сервисов, работающих через сетевые протоколы. В 2000-е годы концепция REST (Representational State Transfer), предложенная Ройом Филдингом в его докторской диссертации, определила стандартный подход к проектированию веб-API. В 2010-е годы REST стал доминирующим стилем, а вместе с ним распространились форматы обмена данными JSON и OpenAPI-спецификации.
¶Классификация
API классифицируют по нескольким признакам.
По способу доступа:
- Локальные (внутренние) — работают в пределах одного процесса или компьютера (библиотечные API, API операционной системы);
- Удалённые — обеспечивают взаимодействие через сеть (веб-API, RPC-сервисы).
По назначению:
- Операционной системы — предоставляют доступ к файловой системе, процессам, сети (POSIX, WinAPI);
- Библиотечные — описывают функции программных библиотек;
- Веб-API — работают поверх протокола HTTP и используются в распределённых системах;
- Аппаратные — описывают взаимодействие с устройствами и драйверами;
- Протокольные — определяют формат обмена данными между программами (SOAP, gRPC).
¶Архитектурные стили
¶REST
REST (Representational State Transfer) — архитектурный стиль, основанный на использовании HTTP-методов (GET, POST, PUT, DELETE) и ресурсов, идентифицируемых URL-адресами. Данные обычно передаются в формате JSON. REST-интерфейсы получили широкое распространение благодаря простоте и независимости от языка программирования.
¶RPC
RPC (Remote Procedure Call) — модель, в которой вызов удалённой функции маскируется под вызов локальной. Примеры — gRPC от Google, использующий протокол HTTP/2 и форматирование Protocol Buffers, и JSON-RPC.
¶GraphQL
GraphQL — язык запросов к API, предложенный Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ) в 2015 году. Клиент сам определяет, какие данные ему нужны, что снижает количество лишних запросов и ответов.
¶Виды доступа
Веб-API делятся на открытые (public) и закрытые (private). Открытые предоставляются внешним разработчикам и часто требуют ключа доступа (API-ключа) или авторизации по протоколу OAuth. Закрытые используются внутри компании для связи между сервисами.
Типичные механизмы аутентификации:
- API-ключи — простые идентификаторы, передаваемые в заголовке запроса;
- OAuth 2.0 — протокол делегированной авторизации, позволяющий выдавать ограниченные токены доступа;
- JWT (JSON Web Token) — формат подписанных токенов, содержащих утверждения о пользователе.
¶Применение
API являются фундаментом современного программного обеспечения. Они используются при разработке мобильных приложений (клиенты взаимодействуют с серверными API), в интеграции корпоративных систем (обмен данными между ERP, CRM и другими платформами), в облачных вычислениях (управление ресурсами через API провайдеров), в интернете вещей (IoT) и в машинном обучении (доступ к моделям через облачные API).
Практически все крупные технологические компании — Google, Яндекс, Яндекс, Mail.ru — предоставляют открытые API для своих сервисов: карт, поиска, почты, платежей.
¶Стандартизация и документация
Для описания API используются формальные спецификации. Наиболее распространены OpenAPI (бывший Swagger) — стандарт описания REST-интерфейсов на основе YAML или JSON, и Protocol Buffers — формат сериализации данных от Google, применяемый в gRPC. Документация API обычно публикуется в виде справочных сайтов с примерами запросов и ответов.
¶История в России
В российской IT-отрасли развитие API-экосистемы связано с работой крупнейших технологических компаний. Яндекс предоставляет открытые API для Поиска, Карт, Аналитики и других сервисов. Сбер, Т-Банк и ВТБ развивают платформенные API для финансовых операций. Госуслуги и ЕСИА используют API для интеграции государственных информационных систем. Федеральный закон «Об информации, информационных технологиях и о защите информации» регулирует обработку данных, передаваемых через API.
¶Источники
- Fielding R. T. Architectural Styles and the Design of Network-based Software Architectures. — University of California, 2000.
- Richardson L., Amundsen M., Ruby S. RESTful Web APIs. — O'Reilly Media, 2013.
- Richardson L. RESTful Web Services. — O'Reilly Media, 2007.
- Fowler M. Patterns of Enterprise Application Architecture. — Addison-Wesley, 2002.
- OpenAPI Specification. — OpenAPI Initiative, 2024.
