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

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

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

История

Концепция API возникла задолго до появления современных веб-технологий. В 1960-х годах разработчики операционных систем начали создавать библиотеки подпрограмм, которые могли вызываться из других программ. Первые формальные API появились в среде мейнфреймов, где они позволяли программам обращаться к системным функциям, таким как ввод-вывод и управление памятью.

В 1980-х годах с развитием графических интерфейсов пользователя (GUI) API стали ключевым элементом операционных систем. Например, Windows API (Win32) предоставил разработчикам стандартизированный набор функций для создания окон, обработки событий и управления графикой. В 1990-х годах с распространением объектно-ориентированного программирования появились API на основе COM (Component Object Model) от Microsoft и CORBA (Common Object Request Broker Architecture) от Object Management Group.

Настоящий прорыв произошел в начале 2000-х годов с развитием веб-сервисов. Компания Salesforce.com в 2000 году представила один из первых коммерческих веб-API, позволяющий сторонним разработчикам интегрироваться с её платформой. В 2004 году Flickr запустил API для обмена фотографиями, а в 2006 году Amazon Web Services (AWS) представил API для облачных вычислений. В 2006 году также появился API Twitter, который стал одним из самых популярных и влиятельных в истории интернета.

С 2010-х годов API стали основой архитектуры микросервисов, когда приложения разбиваются на небольшие независимые сервисы, взаимодействующие через API. В 2015 году компания Google представила gRPC — высокопроизводительный протокол удаленного вызова процедур, основанный на Protobuf. К 2020-м годам API стали неотъемлемой частью цифровой экономики, обеспечивая интеграцию между тысячами сервисов и платформ.

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

По типу доступа

  • Открытые (публичные) API — доступны для использования любым разработчиком без ограничений. Примеры: API Google Maps, API GitHub, API OpenWeatherMap.
  • Внутренние (частные) API — используются только внутри одной организации для взаимодействия между её внутренними системами. Не публикуются для внешних разработчиков.
  • Партнёрские API — доступны только для авторизованных партнёров организации. Часто требуют подписания соглашения и получения ключа доступа.
  • Составные (композитные) API — объединяют несколько вызовов к разным API в один запрос, что повышает производительность и снижает количество сетевых запросов.

По протоколу и архитектуре

  • REST (Representational State Transfer)архитектурный стиль, основанный на HTTP-протоколе. Использует стандартные методы HTTP (GET, POST, PUT, DELETE) для операций с ресурсами. Данные обычно передаются в формате JSON или XML. REST является самым популярным типом API в веб-разработке.
  • SOAP (Simple Object Access Protocol) — протокол обмена структурированными сообщениями в формате XML. Использует WSDL (Web Services Description Language) для описания доступных операций. SOAP обеспечивает строгую типизацию и поддержку транзакций, но считается более тяжеловесным по сравнению с REST.
  • GraphQLязык запросов и среда выполнения, разработанная Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ) в 2015 году. Позволяет клиенту запрашивать только те данные, которые ему нужны, что снижает избыточность передачи данных. В отличие от REST, использует единую конечную точку (endpoint) для всех запросов.
  • gRPC — высокопроизводительный протокол удаленного вызова процедур, разработанный Google. Использует Protobuf (Protocol Buffers) для сериализации данных и HTTP/2 для транспорта. Поддерживает двустороннюю потоковую передачу.
  • WebSocket — протокол, обеспечивающий полнодуплексную связь между клиентом и сервером через одно TCP-соединение. Используется для приложений реального времени, таких как чаты и онлайн-игры.

По способу аутентификации

  • API-ключи — простейший способ аутентификации, при котором клиент передаёт уникальный ключ в заголовке запроса.
  • OAuth 2.0протокол авторизации, позволяющий предоставлять ограниченный доступ к ресурсам без передачи пароля. Используется большинством современных веб-API.
  • JWT (JSON Web Token) — компактный способ передачи данных между сторонами в виде JSON-объекта, подписанного цифровой подписью.
  • Basic Auth — передача имени пользователя и пароля в заголовке HTTP-запроса (считается устаревшим и небезопасным).

Устройство и характеристики

Компоненты API

  • Конечная точка (endpoint) — URL-адрес, по которому доступен API. Например, https://api.example.com/users`.
  • Метод — HTTP-глагол, определяющий тип операции (GET, POST, PUT, DELETE, PATCH).
  • Заголовки (headers) — метаданные запроса, содержащие информацию о формате данных, аутентификации и кэшировании.
  • Параметры — данные, передаваемые в запросе (в URL, теле запроса или заголовках).
  • Тело запроса/ответа — содержимое, передаваемое в формате JSON, XML, FormData или другом.
  • Код состояния HTTP — числовой код, указывающий на результат обработки запроса (200 — успех, 404 — не найдено, 500 — внутренняя ошибка сервера).

Характеристики

  • Пропускная способность — количество запросов, которое API может обработать в единицу времени.
  • Латентность — время от отправки запроса до получения ответа.
  • Версионирование — практика поддержки нескольких версий API для обеспечения обратной совместимости. Обычно версия указывается в URL (/v1/users) или в заголовке.
  • Документация — описание всех доступных методов, параметров, форматов данных и примеров использования. Популярные форматы: OpenAPI (Swagger), RAML, API Blueprint.
  • Лимитирование (rate limiting) — механизм ограничения количества запросов от одного клиента за определённый промежуток времени для предотвращения злоупотреблений.

Применение

API используются практически во всех сферах современной разработки программного обеспечения:

  • Веб-разработка — интеграция с платёжными системами (Stripe, PayPal), социальными сетями (Facebook API, Twitter API), картографическими сервисами (Google Maps API, Яндекс.Карты API).
  • Мобильные приложения — получение данных с сервера, отправка push-уведомлений, интеграция с облачными хранилищами.
  • Облачные вычисления — управление виртуальными машинами, хранилищами и базами данных через API облачных провайдеров (AWS, Microsoft Azure, Google Cloud).
  • Интернет вещей (IoT) — взаимодействие между устройствами и облачными платформами (например, API для управления умным домом).
  • Финансовые технологии — доступ к банковским операциям, курсам валют, биржевым данным через API.
  • Искусственный интеллект — использование API для распознавания изображений, обработки естественного языка, машинного обучения (OpenAI API, Google Cloud Vision API).
  • Государственные услуги — в России через портал «Госуслуги» предоставляются API для интеграции с государственными информационными системами.

Примеры известных API

  • Google Maps API — позволяет встраивать карты, геокодирование, маршруты и поиск мест в приложения.
  • Twitter API — предоставляет доступ к твитам, пользователям, трендам и аналитике (с ограничениями после изменений политики 2023 года).
  • GitHub API — позволяет управлять репозиториями, задачами, pull request'ами и действиями.
  • OpenAI API — предоставляет доступ к моделям GPT для генерации текста, изображений и кода.
  • Яндекс.Карты API — российский аналог Google Maps API, предоставляющий картографические и геоинформационные сервисы.
  • Сбербанк API — API для доступа к банковским продуктам, платежам и аналитике.

Критика и ограничения

  • Безопасность — неправильно спроектированные API могут стать точкой входа для атак (SQL-инъекции, межсайтовый скриптинг, утечка данных). Требуется тщательная валидация входных данных и аутентификация.
  • Избыточность данных — в REST API клиент часто получает больше данных, чем ему нужно, что увеличивает трафик и время обработки. GraphQL частично решает эту проблему.
  • Версионирование — изменение API может нарушить работу существующих клиентов. Требуется продуманная стратегия устаревания и миграции.
  • Зависимость от внешних сервисов — использование сторонних API создаёт зависимость от их доступности, стабильности и политики ценообразования.
  • Сложность документирования — для API с большим количеством методов и параметров требуется качественная документация, иначе разработчики будут тратить много времени на изучение.

Интересные факты

  • Первый веб-API, который получил широкое распространение, был создан компанией Salesforce в 2000 году.
  • Термин «API» впервые был использован в 1968 году в статье «The Structure of the "THE"-Multiprogramming System» Эдсгера Дейкстры.
  • В 2020 году количество публичных API превысило 24 000, согласно данным ProgrammableWeb.
  • API-экономика оценивается в миллиарды долларов: компании, такие как Twilio, Stripe и Plaid, построили свой бизнес исключительно на предоставлении API.
  • В России действует Федеральный закон «Об информации, информационных технологиях и о защите информации», который регулирует использование API в государственных информационных системах.

Источники

  • Fielding, R. T. (2000). Architectural Styles and the Design of Network-based Software Architectures (докторская диссертация, University of California, Irvine).
  • Richardson, L., & Ruby, S. (2007). RESTful Web Services. O'Reilly Media.
  • Newman, S. (2015). Building Microservices: Designing Fine-Grained Systems. O'Reilly Media.
  • ProgrammableWeb — каталог публичных API (данные до 2022 года).
  • Документация OpenAPI Initiative (Swagger).
  • Федеральный закон от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации».

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →