Главная
АИ #43 (278)
Статьи журнала АИ #43 (278)
Открытые и закрытые API: сравнительный анализ и области применения

Открытые и закрытые API: сравнительный анализ и области применения

Научный руководитель

Рубрика

Информационные технологии

Ключевые слова

API
открытые интерфейсы
закрытые интерфейсы
публичные API
партнёрские API
внутренние API
версионирование
безопасность API
OpenAPI
gRPC/Protobuf
AsyncAPI

Аннотация статьи

В статье представлены результаты исследования, направленного на систематизацию подходов к проектированию и эксплуатации открытых и закрытых API, а также на идентификацию их областей применения. Путём анализа базовых спецификаций (HTTP, OpenAPI, gRPC/Protobuf, AsyncAPI) и обобщения практик предложена классификация интерфейсов по степени «открытости» (публичные, партнёрские, внутренние), определены критерии сопоставления и разработаны рекомендации по выбору архитектурных решений. Практическая значимость результатов заключается в их применимости при проектировании интеграций, формировании дорожных карт платформенных решений и выработке политики доступа к данным и сервисам.

Текст статьи

Интерфейсы прикладного программирования (API) являются ключевым механизмом интеграции между программными системами, определяя формат обращений, границы ответственности и темп эволюции платформ. Корректный анализ «открытых» и «закрытых» API требует разведения двух плоскостей: собственно политики доступа и формата описания контракта. Семантика HTTP задаёт общий понятийный аппарат и предписывает интерпретацию методов, кодов состояния, заголовков и URI для всех версий HTTP; именно она обеспечивает интероперабельность на уровне приложения и служит нормативным фоном для большинства синхронных веб-API. Официальная спецификация IETF RFC 9110 прямо формулирует, что документ описывает общую архитектуру HTTP, устанавливает общую терминологию и определяет аспекты протокола, общие для всех версий», включая схемы URI http и https [1]. Следовательно, сравнение режимов доступа следует проводить на единой протокольной основе, не смешивая её с политикой авторизации.

Над протокольным уровнем располагаются формальные форматы описания контрактов. Спецификация OpenAPI (OAS) версии 3.1 представляет стандарт, независимый от языка программирования, для строгого описания HTTP-API. Контракт, зафиксированный в OAS, сокращает объём клиентского «клеящего» кода, обеспечивает воспроизводимую генерацию документации и SDK и упрощает автоматизированное тестирование [2]. Версия 3.1 вводит полную совместимость с JSON Schema 2020-12, что унифицирует описание и валидацию структур данных [3]. Тем самым OAS выступает именно языком описания HTTP-контрактов и не определяет режим доступа к интерфейсу. На практике это означает, что и публичные, и внутренние API целесообразно проектировать в парадигме contract-first, а политику доступа решать отдельными средствами аутентификации и авторизации. При таком разграничении протокольно-контрактная основа общая для всех режимов доступа, а различия между «открытыми» и «закрытыми» API проявляются в требованиях к эволюции контрактов, механизмах доверия и эксплуатационных практиках.

Аутентификацию и авторизацию в публичных и партнёрских API обычно реализуют через связку OAuth 2.0 и OpenID Connect. В OAuth 2.0 описан механизм выдачи приложению ограниченного доступа к HTTP-ресурсу – либо от имени пользователя, либо от имени самого приложения [4]. OIDC добавляет поверх OAuth 2.0 слой аутентификации: вводит ID-токен и стандартные claims о пользователе, что позволяет надёжно установить личность независимо от конкретной реализации. В закрытых контурах (внутренних и партнёрских) поверх OAuth/OIDC часто используют взаимную аутентификацию на уровне TLS (mTLS) для проверки и клиента, и сервера [5]. При этом взаимодействие остаётся в рамках семантики HTTP, заданной RFC 9110 [1].

Внутренние высоконагруженные взаимодействия часто строят на RPC-транспорте gRPC [6], где Protocol Buffers [7] служат и IDL, и форматом обмена; официальные руководства подчёркивают: gRPC может использовать Protocol Buffers как IDL и как формат сообщений, что даёт строгие контракты и низкие накладные расходы. Для событийных и сообщение-ориентированных интеграций комплементарным к OAS стандартом выступает AsyncAPI, описывающий каналы, сообщения и привязки независимо от протокола [8].

С точки зрения политики доступа открытые API - интерфейсы с публичной документацией и стандартной процедурой получения доступа, рассчитанные на внешний круг разработчиков; закрытые объединяют партнёрские и внутренние варианты. Это влияет на требования к стабильности: для публичных уместна консервативная эволюция (явное версионирование, запрет ломающих изменений в стабильных ветках), что рекомендуют Google API Design Guide [9]; во внутренних контурах допустим более высокий темп изменений при контролируемой миграции.

Для открытых API приоритетны меры противодействия злоупотреблениям, принцип минимально необходимых привилегий и корректная обработка ошибок; партнёрские и внутренние контуры дополняются взаимной аутентификацией на уровне TLS (mTLS) и регламентированным аудитом сервисных учётных записей.

Открытые API дают сетевые эффекты внешней экосистемы, но повышают стоимость изменений, поэтому требуются портал разработчика, единый стиль ошибок и управляемый вывод версий - практики, закреплённые в Google API Design Guide и AIP. Партнёрские API монетизируются договорно при более предсказуемой стоимости изменений. Внутренние API сокращают time-to-market за счёт повторного использования и строгих контрактов при автоматизации CI/CD.

Заключая, отметим: наилучшие результаты даёт портфельный подход к управлению доступом к интерфейсам, когда организация осознанно комбинирует открытые, партнёрские и внутренние API. Опора на единые стандарты протокола, формально описанные контракты, проверенные механизмы доверия и дисциплину версионирования обеспечивает предсказуемость эволюции, управляемые эксплуатационные риски и снижение совокупной стоимости владения. Такой подход повышает масштабируемость интеграций и делает развитие экосистемы устойчивым в долгосрочной перспективе.

Список литературы

  1. IETF. RFC 9110. Семантика HTTP [Электронный ресурс]. – Пер. с англ. – Энциклопедия сетевых протоколов и технологий. – URL: https://www.protocols.ru/.
  2. Zerocoder. OpenAPI: что это, особенности и преимущества [Электронный ресурс]. – ya.zerocoder.ru. – URL: https://ya.zerocoder.ru/pgt-openapi-chto-eto-takoe-i-kak-s-nim-rabotat/.
  3. FastAPI. Объявление примеров данных запроса (поддержка JSON Schema в OpenAPI 3.1) [Электронный ресурс]. – URL: https://fastapi.tiangolo.com/ru/tutorial/schema-extra-example/.
  4. Википедия. OAuth 2.0 [Электронный ресурс]. – URL: https://ru.wikipedia.org/wiki/OAuth.
  5. Cloudflare Learning Center. Взаимная аутентификация TLS (mTLS) [Электронный ресурс]. – URL: https://www.cloudflare.com/ru-ru/learning/access-management/what-is-mutual-tls/.
  6. Яндекс Облако. Что такое gRPC? [Электронный ресурс]. – URL: https://yandex.cloud/ru/docs/glossary/grpc.
  7. Metanit. Protocol Buffers: определение сообщений и сервиса [Электронный ресурс]. – URL: https://metanit.com/sharp/tutorial/5.3.php.
  8. Хабр. AsyncAPI – «Swagger» для брокеров сообщений: обзор и туториал [Электронный ресурс]. – URL: https://habr.com/ru/articles/530836/.
  9. Google Cloud. Версионирование API [Электронный ресурс]. – URL: https://cloud.google.com/apis/design/versioning?hl=ru.

Поделиться

34

Лазаренко С. А. Открытые и закрытые API: сравнительный анализ и области применения // Актуальные исследования. 2025. №43 (278). URL: https://apni.ru/article/13354-otkrytye-i-zakrytye-api-sravnitelnyj-analiz-i-oblasti-primeneniya

Обнаружили грубую ошибку (плагиат, фальсифицированные данные или иные нарушения научно-издательской этики)? Напишите письмо в редакцию журнала: info@apni.ru

Похожие статьи

Другие статьи из раздела «Информационные технологии»

Все статьи выпуска
Актуальные исследования

#43 (278)

Прием материалов

25 октября - 31 октября

осталось 2 дня

Размещение PDF-версии журнала

5 ноября

Размещение электронной версии статьи

сразу после оплаты

Рассылка печатных экземпляров

19 ноября