Открыть сервисСервис

Программный интерфейс приложения

Программный интерфейс приложения (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.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru