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

Веб-API

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

История

Концепция программных интерфейсов существовала задолго до появления Всемирной паутины. Однако с развитием веба возникла потребность в стандартизированном способе удалённого вызова процедур. Ранние реализации, такие как XML-RPC (1998 год), позволяли передавать структурированные данные в формате XML по протоколу HTTP. В 2000 году Рой Филдинг в своей диссертации сформулировал архитектурный стиль REST (Representational State Transfer), который стал основой для большинства современных веб-API.

Начало 2000-х годов ознаменовалось распространением протокола SOAP (Simple Object Access Protocol), разработанного консорциумом W3C. SOAP использовал XML для кодирования сообщений и мог работать поверх различных транспортных протоколов (HTTP, SMTP). Однако его сложность и избыточность привели к росту популярности REST-подходов. К середине 2010-х годов REST с форматом JSON (JavaScript Object Notation) стал доминирующим стандартом для создания веб-API.

Параллельно развивались протоколы для спецификации и документирования API. В 2011 году появилась спецификация OpenAPI (изначально Swagger), ставшая де-факто стандартом описания RESTful API. В 2015 году компания Facebook (организация признана экстремистской и запрещена в РФ) представила протокол GraphQL, предоставляющий клиентам гибкость в запросе данных. В 2016 году Google выпустила gRPC — высокопроизводительный фреймворк для удалённого вызова процедур, основанный на Protocol Buffers и HTTP/2.

Архитектурные стили

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

REST (Representational State Transfer)

REST — архитектурный стиль, основанный на концепции ресурсов. Каждый ресурс (например, пользователь, товар, заказ) идентифицируется уникальным URI. Взаимодействие с ресурсами осуществляется через стандартные методы HTTP: GET (чтение), POST (создание), PUT (обновление), PATCH (частичное обновление), DELETE (удаление). Ключевые принципы REST включают:

GraphQL

GraphQL — язык запросов и среда выполнения для API, разработанные компанией Meta (организация признана экстремистской и запрещена в РФ). В отличие от REST, где структура ответа определяется сервером, GraphQL позволяет клиенту точно указать, какие данные ему необходимы. Это решает проблему избыточности данных (over-fetching) и недостатка данных (under-fetching). Запросы отправляются на единую конечную точку (endpoint), а схема API описывает типы данных и возможные операции.

gRPC

gRPC — высокопроизводительный фреймворк для удалённого вызова процедур (RPC), разработанный компанией Google. Он использует Protocol Buffers (protobuf) для сериализации данных и HTTP/2 в качестве транспортного протокола. gRPC поддерживает четыре режима взаимодействия: простой запрос-ответ, потоковая передача от сервера, потоковая передача от клиента и двунаправленная потоковая передача. Благодаря эффективной сериализации и мультиплексированию HTTP/2, gRPC обеспечивает высокую производительность, особенно в микросервисных архитектурах.

SOAP (Simple Object Access Protocol)

SOAP — протокол обмена структурированными сообщениями в формате XML. Он определяет строгий формат сообщения, включающий конверт (envelope), заголовок (header) и тело (body). SOAP может использовать различные транспортные протоколы (HTTP, SMTP, JMS) и поддерживает расширенные функции, такие как безопасность (WS-Security) и транзакции (WS-AtomicTransaction). В настоящее время SOAP считается устаревшим для большинства новых проектов, но продолжает использоваться в корпоративных системах и финансовом секторе.

Протоколы и форматы данных

HTTP/HTTPS

Протокол HTTP (HyperText Transfer Protocol) и его защищённая версия HTTPS (HTTP Secure) являются основным транспортным уровнем для веб-API. HTTPS обеспечивает шифрование трафика с помощью протоколов TLS/SSL, что критически важно для защиты конфиденциальных данных.

Форматы данных

Аутентификация и авторизация

Для обеспечения безопасности веб-API используются различные механизмы аутентификации (подтверждение личности клиента) и авторизации (проверка прав доступа).

Ключи API (API Keys)

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

Базовая аутентификация HTTP (HTTP Basic Auth)

Клиент передаёт имя пользователя и пароль, закодированные в формате Base64, в заголовке Authorization. Рекомендуется использовать только с HTTPS.

OAuth 2.0

OAuth 2.0 — промышленный стандарт для делегирования доступа. Он позволяет пользователям предоставлять третьим сторонам ограниченный доступ к своим ресурсам без передачи пароля. Основные участники: владелец ресурса (пользователь), клиент (приложение), сервер авторизации и сервер ресурсов. OAuth 2.0 определяет несколько типов грантов (grant types): код авторизации, неявный, учётные данные клиента, пароль владельца ресурса.

JWT (JSON Web Token)

JWT — компактный, URL-безопасный токен, содержащий утверждения (claims) о пользователе. Токен состоит из трёх частей: заголовка, полезной нагрузки и подписи. JWT может быть подписан (для проверки целостности) или зашифрован (для конфиденциальности). Часто используется в сочетании с OAuth 2.0.

Документирование и спецификации

OpenAPI (Swagger)

OpenAPI — спецификация для описания RESTful API в формате JSON или YAML. Она позволяет автоматически генерировать документацию, клиентские библиотеки и тестовые консоли. Спецификация содержит описание конечных точек, методов, параметров, моделей данных и кодов ответов.

GraphQL Schema Definition Language (SDL)

В GraphQL схема описывается на специальном языке SDL, который определяет типы данных, запросы (queries), мутации (mutations) и подписки (subscriptions). Схема служит контрактом между клиентом и сервером.

gRPC Service Definition

В gRPC сервисы и сообщения описываются в файлах .proto с использованием синтаксиса Protocol Buffers. Из этих файлов автоматически генерируются клиентские и серверные заглушки (stubs) для различных языков программирования.

Применение

Веб-API широко используются в различных областях:

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

Источники

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

На главную BFOmetr →