Ежедневно люди пользуются онлайн-сервисами, покупают товары в интернет-магазинах, регистрируются в бонусных системах и работают с API. Программные интерфейсы — неотъемлемая часть бизнеса. Капитализация компаний, внедривших API, за четыре года выросла более чем на 12% по сравнению с предприятиями без этой технологии. Одновременно 36% компаний в e-commerce указали на то, что API — стратегический актив, который создаёт ценность для бизнеса.
Что такое API
API — это комплекс методов и правил, по ним сервисы и программы работают друг с другом и передают сведения для выполнения запросов. Взаимодействие осуществляется с применением функций, классов, структур и протоколов.
Пример работы интерфейса
Клиент оплачивает билет на аттракционы банковской картой. В момент покупки торговый терминал обращается к банковскому API и отправляет запрос на оплату. Сервис проверяет состояние счёта и списывает с него деньги автоматически. Участие человека в процессе сведено к минимуму.
API можно сравнить с договором между клиентом и продавцом. Только в контексте нашей темы клиент — это приложение, которому нужна информация, а продавец — сервис, обладающий необходимыми сведениями. API регламентирует, что и как будет передаваться между обеими сторонами.
Что такое REST API
REST API — это архитектурный подход, который устанавливает некоторые ограничения на интерфейс и определяет функциональность программного продукта. Иногда разработчики используют термин RESTful. Особенность подхода — унификация принципа работы API. Она позволяет упростить разработку и повысить производительность.
Архитектура REST API
REST — Representational state transfer, то есть «передача состояния представления».
REST API создали в 2000 году и активно развивают до сих пор из-за его преимуществ. Разработчики могут быстрее выпустить готовый продукт, не ограничиваются одним форматом данных и т. д.
Особенностью того, как работает REST API, можно назвать передачу информации без сохранения состояния. Его отсутствие означает, что сервер выполняет каждый запрос независимо от предыдущих.
Как работает REST API
Чтобы понять принцип работы этого программного интерфейса, рассмотрим примеры REST API. Для разбора возьмём онлайн-сервис заказа автомобиля, у которого есть две категории машин — эконом и комфорт. В REST API у каждой из них будет унифицированный указатель:
-
http://carix.ru/rental/econom;
-
http://carix.ru/rental/comfort.
Эти ссылки дают определение ресурсу на онлайн-сервисе — данные о наличии или отсутствии свободных авто, которые входят в категорию. Для взаимодействия с ресурсами API использует CRUD-команды HTTP (Hypertext Transfer Protocol):
- создание (Create)
- чтение (Read)
- модификацию (Update)
- удаление (Delete)
В REST API для ускорения обработки запросов типичные данные сохраняются во временной памяти. Кешируемость позволяет повторно не обращаться к серверной части и не тратить время зря.
Архитектура REST API
Принципы REST API стали популярнее других вариантов, так как подходят для множества проектов благодаря гибкости и унифицированности архитектуры. REST внедряют для создания веб-сервисов, мобильных программ, IoT-устройств, облачных платформ и т. д. Архитектура REST API станет лучшим решением:
-
при небольшой производительности сервера;
-
при потребности сохранять запросы и ответы;
-
при необходимости поддерживать надёжную и производительную связь для архитектуры REST API приложений;
-
при применении подхода AJAX (заключается во взаимодействии клиентского и серверного софта в фоновом режиме).
Используя REST API, важно помнить, что инструмент не гарантирует такой уровень безопасности, как SOAP. Из-за этого его чаще используют для реализации общедоступных API, которые не работают с конфиденциальной и критически важной информацией.
Главное преимущество REST — гибкость. Разработчиков ограничивает лишь несколько правил.
Принципы
- Единый интерфейс. Описание ресурсов и их доступ к данным происходит через единый интерфейс. Каждый ресурс идентифицируется уникальным URI (Uniform Resource Identifier), который определяет способ взаимодействия с данными.
- Внутренняя логика отделена от представления ресурса. Архитектура REST API ставит приоритет на отделение бизнес-логики от представления данных. Это позволяет клиентам работать с данными ресурсов без необходимости знать детали их обработки.
- Архитектура Client-Server. Клиент использует URL для получения ресурсов. Не имеет значения, как сервер работает с запросом: технологии серверной части не влияют на клиентский софт. Таким образом, они могут развиваться независимо. Это позволяет использовать единый API в сложных проектах с множеством сервисов, например веб-браузеров или мобильных программ.
- Отсутствие состояния. RESTful API не сохраняет информации о сеансе пользователя. То есть на каждый запрос сервер должен предоставлять полные данные для его выполнения, что увеличивает широту применения API.
- Кешируемость. Запрос к серверу должен содержать сведения о том, следует ли его кешировать и на какое время. Кеширование редко обновляемых данных повышает производительность и устраняет избыточные взаимодействия.
- Многоуровневая архитектура. REST API серверы имеют ступенчатую структуру. Каждый компонент взаимодействует только с соседними и не связан с остальными. Кроме того, клиент не должен знать, подключён ли он напрямую к конечному серверу или посреднику. Поэтому разработчик может легко масштабировать систему или внедрить дополнительные уровни, такие как шлюзы, прокси и балансировщики нагрузки.
- Предоставление доступа по требованию. Сервер отправляет код частями по мере необходимости, когда клиентскому приложению требуется дополнительная функциональность. Например, для работы в офлайн-режиме Google Docs пользователь получит дополнительный код, необходимый для работы без интернета.
Методы REST API
Для взаимодействия клиентской и серверной части обычно хватает четырёх основных методов REST API:
-
GET — взятие данных об объекте
-
POST — создание нового ресурса
-
PUT — изменение объекта. В основном метод применяют для обновления сведений
-
DELETE — удаление данных о ресурсе из базы
Для реализации сложных проектов разработчики иногда используют менее распространённые методы: LIST, UPDATE, PATCH и др.
Как работает REST API на примере аренды и доставки автомобиля клиенту:
-
Чтобы передать информацию в службу доставки, сервис отправляет запрос с методом POST. В HTTP-заголовке указывает адрес сервера.
-
Когда менеджер подтверждает оплату и передаёт заказ курьеру, статус заявки автоматически изменяется. Для этого нужен метод PUT.
-
Если у компании есть возможность отслеживать маршрут перемещения авто на карте, то координаты актуализируются также методом PUT.
-
Когда заказчик хочет узнать статус заказа в личном кабинете, то приложение отправляет на сервер запрос GET и выдаёт информацию на экране.
-
Если клиент решил отказаться от автомобиля, он отправляет запрос DELETE. Тогда из базы данных удалят информацию. Обычно компании хранят данные даже о незавершённых заказах, используя метод POST.
Где используется REST API
Архитектура REST встречается в API практически любой ниши бизнеса благодаря тому, что HTTP-протокол, на котором основан этот подход, реализован во всех языках программирования и ОС. Это делает применение архитектуры безграничным, в отличие от аналогичных решений.
Сейчас API проник во все сферы человеческой деятельности. Его активно внедряют в торговлю, финансовый сектор и так далее. К 2027 году количество интерфейсов, развёрнутых в банковском секторе, увеличится на 100% по сравнению с 2022-м.
RESTful используют для решения следующих задач:
-
Корректное взаимодействие нескольких функций внутри одной программы. Вызывающая функция должна сохранять тип и порядок параметров вызываемой, иначе возникнут сбои.
-
Получение данных из памяти компьютера и автоматическое изменение настроек операционных задач.
-
Создание единой экосистемы из клиентских и серверных приложений.
-
Построение микросервисных серверных программ. REST позволяет разделить большой и монолитный софт на множество составных частей, выполняющих определённую функцию. В результате система станет максимально гибкой, а изменение одного компонента не повлияет на другие.
-
Предоставление доступа к приложениям стороннего разработчика.
Важно! Если компания планирует внедрить REST API, нужно понимать, что это решение не подходит для реализации систем, которым важна строгая согласованность и целостность информации в течение всего цикла.
В каких секторах используют REST API
Подход REST ограниченно внедряют в финансовый сектор. Это объясняется тем, что денежные транзакции требуют сбоя полного пакета обновлений, если возникнет ошибка на любом из этапов. Банки — консервативный бизнес, где к инновациям относятся с осторожностью. Они до сих пор придерживаются набора требований ACID (атомарность, согласованность, изоляция, устойчивость).
Из-за этого в банковском секторе более распространены решения, созданные на базе SOAP. Он имеет встроенный набор ACID, поэтому реализация необходимых модулей пройдёт быстро и с минимальными затратами.
Более распространена эта архитектура в нише облачных приложений. Благодаря отсутствию состояния модули REST API легко переустанавливать и масштабировать для удовлетворения потребностей в мощности.
Также технологию активно используют в розничной электронной торговле. Реализовать программный интерфейс сравнительно просто, и он не требует высокой пропускной способности сервера. А методов GET и POST хватает для обработки основных запросов:
-
оформления заказов
-
комплектации
-
создания аккаунтов
-
обработки платежей
-
работы с телефонией, складом и так далее
В отличие от финансового сектора, для решения таких задач не требуются ACID и максимальная надёжность, но важна скорость и гибкость архитектуры.
Кейс Exolve
К платформе подключился онлайн-магазин одежды, который работает самостоятельно и на нескольких маркетплейсах (Ozon, Yandex, Avito и др.), и возникла проблема ведения аналитики по коммуникациям. Информацию приходится разбирать по частям или сводить вручную.
Для решения задачи у Exolve есть сервис статистики по API, он позволяет подключить все переписки и звонки из всех приложений в CRM. В приоритете этого механизма быстродействие, а не стандарты ACID и аналогичные решения для повышения согласованности.
Из-за сравнительно слабой безопасности REST сервис Exolve имеет дополнительную защиту. Между программами создаётся зашифрованный шлюз, который предотвратит кражу корпоративных данных.
Результаты внедрения сервиса:
-
Освобождение восьми часов рабочего времени аналитика еженедельно, потому что ручное сведение данных больше не требуется.
-
Снижение погрешностей в анализе до 5%, так как все нужные данные автоматически и в полном объёме передаются CRM, то есть потери и ошибки по пути исключаются.
Альтернативы REST API
Кроме этого подхода в разработке используют ещё пять альтернатив:
-
GraphQL — язык запросов и среда выполнения для программных интерфейсов. Он позволяет установить, какие сведения нужны клиентской части, и передавать только их.
-
gRPC — открытая технология удалённого вызова, использующая протокол HTTP/2 и тип сообщений Protocol Buffers для передачи информации между сервером и клиентским ПО.
-
SOAP — устаревший протокол обмена данными. Он работает с XML для описания содержания сообщений. Его особенность — высокий уровень защиты благодаря встроенным инструментам для контроля безопасности.
-
WebSocket — протокол для создания двустороннего взаимодействия между клиентом и серверной частью архитектуры. Системы, построенные на базе WebSocket, отправляют данные друг другу в режиме реального времени.
-
Server-Sent Events — технология, которую применяют для передачи клиентам потоковых данных в текстовом формате. Она стала популярна в нише стриминговых сервисов.
Заключение
REST API — популярное решение из-за гибкости и унифицированности. Основные преимущества:
-
REST — стиль, который не ограничивает разработчиков API в выборе протоколов и методов. При этом обычно в RESTful внедряют HTTP-стандарт, а файлы доставляют в форматах JSON или XML.
-
Архитектура REST API отличается быстродействием, поэтому подходит для компаний с ограниченной мощностью сервиса. Благодаря кешированию типичных запросов клиенту не придётся повторно обращаться к серверу.
-
REST-подход делает API надёжными, гибкими и максимально быстрыми. А немонолитная структура позволяет масштабировать систему без комплексной перестройки и работы со всеми компонентами.