Программный интерфейс прикладного программирования¶
API (Application Programming Interface, интерфейс прикладного программирования) — это набор правил, протоколов и инструментов, определяющих способ взаимодействия между программными компонентами: приложениями, сервисами, библиотеками или операционной системой. API задаёт формат запросов, набор доступных операций и формат ответов, позволяя разработчикам использовать функциональность сторонних систем без знания их внутренней реализации.
¶Назначение и принцип работы
API выступает посредником между двумя программными слоями. Клиент (потребитель API) отправляет запрос по описанному контракту, а сервер (владелец API) возвращает результат в согласованном формате. Благодаря этому внутренняя архитектура системы может меняться без разрушения внешних интеграций — это принцип слабой связанности, лежащий в основе современного программного проектирования.
Типичный API-контракт включает:
- набор доступных операций (методов) и их параметры;
- формат данных (чаще всего JSON или XML);
- правила аутентификации и авторизации;
- коды ошибок и формат ответов при сбоях.
¶Классификация
API классифицируют по нескольким признакам.
По способу доступа:
- Локальные (внутренние) — взаимодействие в пределах одного процесса или компьютера (например, вызов функций системной библиотеки).
- Удалённые — взаимодействие по сети, чаще всего через HTTP.
По модели предоставления:
| Тип | Описание |
|---|---|
| REST API | Архитектурный стиль на базе HTTP; использует методы GET, POST, PUT, DELETE; данные обычно в формате JSON |
| SOAP | Протокол обмена сообщениями на базе XML со строгой спецификацией (WSDL) |
| GraphQL | Язык запросов, позволяющий клиенту запрашивать ровно нужные данные |
| gRPC | Высокопроизводительный RPC-протокол на базе HTTP/2 и Protocol Buffers |
| WebSocket | Двустороннее постоянное соединение для обмена сообщениями в реальном времени |
По назначению:
- Операционные системы — доступ к файловой системе, сети, устройствам (POSIX API, WinAPI).
- Библиотечные — вызов функций языковых и сторонних библиотек.
- Веб-сервисы — интеграция распределённых систем через сеть.
- Аппаратные (hardware API) — взаимодействие с драйверами и оборудованием.
- Программные интерфейсы приложений — доступ к функциям мобильных и десктопных приложений.
¶REST как основной подход
Наиболее распространён в веб-разработке REST (Representational State Transfer). REST API использует стандартные HTTP-методы: GET — получение данных, POST — создание, PUT/PATCH — обновление, DELETE — удаление. Ресурсы идентифицируются URL-адресами, состояние передаётся в теле запроса (обычно в JSON). Пример обращения к публичному API погоды:
`` GET https://api.example.com/v1/weather?city=Moscow ``
Ответ сервера содержит данные в структурированном виде, пригодном для автоматической обработки.
¶Аутентификация и безопасность
Доступ к API регулируется средствами аутентификации. Наиболее распространены:
- API-ключи — уникальные токены, передаваемые в заголовке запроса;
- OAuth 2.0 — протокол делегированной авторизации, выдающий временные токены доступа;
- JWT (JSON Web Token) — самодостаточные подписанные токены с данными о пользователе.
Дополнительно применяются ограничение частоты запросов (rate limiting), проверка IP-адресов, шифрование трафика по HTTPS.
¶Роль в современной разработке
API являются фундаментом принципа «всё как сервис» (XaaS) и архитектуры микросервисов, где крупное приложение разбивается на независимые компоненты, общающиеся через внутренние API. Публичные API позволяют компаниям монетизировать свои данные и сервисы: платформенные модели (маркетплейсы, платёжные шлюзы, картографические сервисы) строятся на открытых программных интерфейсах.
В России разработка и эксплуатация API активно применяется в госсистемах (ЕСИА, Госуслуги, платёжные шлюзы ЦБ), банковских и телекоммуникационных инфраструктурах. Стандартизация внутренних API в крупных организациях позволяет сокращать стоимость интеграций и ускорять вывод новых сервисов.
¶Историческая справка
Термин «API» появился в 1970-е годы в контексте библиотек программирования — тогда API описывал набор функций, доступных разработчику при подключении библиотеки. С развитием интернета в 1990-е–2000-е понятие расширилось до сетевых интерфейсов, а с распространением смартфонов в 2008-е годы — до публичных API мобильных платформ (iOS, Android).
¶Источники
- Рой Филдинг. «Architectural Styles and the Design of Network-based Software Architectures», 2000
- Мартин Фаулер. «Patterns of Enterprise Application Architecture», 2002
- «RESTful Web APIs», Л. Ричардсон, М. Амундсен, С. Лобо, 2013
- RFC 9110: HTTP Semantics, IETF, 2022
