REST API

menu icon

REST API

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

Что такое REST API?

API или программный интерфейс приложения представляет собой набор правил, определяющих способ взаимодействия между приложениями или устройствами. REST API — это API, соответствующий принципам архитектурного стиля REST (от англ. Representational State Transfer — «передача состояния представления»). По этой причине REST API иногда называют RESTful API.

REST (сам термин был введен Роем Филдингом в его докторской диссертации в 2000 году) обеспечивает относительно высокий уровень гибкости и свободы для разработчиков. Но гибкость — лишь одна из причин, объясняющих популярность REST API как способа взаимодействия между компонентами и приложениями в микросервисной архитектуре.

Принципы проектирования REST

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

Некоторые API, например SOAP или XML-RPC, устанавливают строгие ограничения для разработчиков. Однако для разработки REST API можно использовать практически любой язык программирования и разнообразные форматы данных. Единственное требование заключается в соблюдении шести принципов проектирования REST, известных также как архитектурные ограничения:

  1. Единый интерфейс. Все запросы API к одному и тому же ресурсу должны выглядеть одинаково, независимо от отправителя. В REST API один и тот же элемент данных, например имя или адрес электронной почты пользователя, должен принадлежать одному универсальному коду ресурса (URI). Размер ресурсов не должен быть слишком большим, однако ресурсы должны содержать всю информацию, которая может потребоваться клиенту.
  2. Разделение клиента и сервера. В соответствии с требованиями REST API клиент и сервер должны работать полностью независимо друг от друга. Клиентскому приложению достаточно знать URI запрашиваемого ресурса; иначе взаимодействие с серверным приложением будет невозможно. Аналогичным образом, серверное приложение не должно вносить никаких изменений в клиентское приложение, а только передавать запрошенные данные через HTTP.
  3. Отсутствие сохранения состояния. REST API функционируют без сохранения состояния, т. е. каждый запрос должен содержать всю информацию, необходимую для его обработки. Другими словами, для REST API не требуется установление постоянных сеансов с сервером. Серверным приложениям запрещено хранить какие-либо данные, связанные с запросом клиента.
  4. Поддержка кэширования. По возможности ресурсы должны поддерживать кэширование на стороне клиента или сервера. Ответы сервера также должны хранить информацию о том, разрешено ли кэширование для предоставленного ресурса. Это позволяет увеличить производительность на стороне клиента, одновременно повысив масштабируемость на стороне сервера.
  5. Многоуровневая архитектура системы. В REST API вызовы и ответы передаются через разные уровни. Предполагается, что клиентское и серверное приложения не взаимодействуют между собой напрямую. Цепочка передачи данных может включать несколько промежуточных узлов. REST API должны проектироваться таким образом, чтобы ни клиент, ни сервер не могли знать, взаимодействуют они с конечным приложением или промежуточным узлом.
  6. Код по требованию (необязательное требование). REST API обычно отправляют статические ресурсы, однако в некоторых случаях ответ может содержать исполняемый код (например, Java-апплеты). В таких случаях код должен выполняться только по требованию.

Принцип работы REST API

REST API используют запросы HTTP для выполнения стандартных функций базы данных, таких как создание, чтение, обновление и удаление записей (так называемые функции CRUD). Например, REST API может использовать запрос GET для получения записи, запрос POST для создания записи, запрос PUT для обновления записи и запрос DELETE для удаления записи. В вызовах API поддерживаются все методы HTTP. Хорошо продуманный REST API можно сравнить с веб-сайтом, который работает в веб-браузере со встроенной поддержкой HTTP.

Состояние ресурса в любой момент времени («отметка времени») называется представлением ресурса. Эта информация может быть предоставлена клиенту практически в любом формате, включая JavaScript Object Notation (JSON), HTML, XLT, Python, PHP или текстовом формате. Популярность JSON обусловлена тем, что данный формат не зависит от языка программирования и понятен как человеку, так и компьютеру.

Важную роль в вызовах REST API также играют заголовки и параметры запросов, поскольку они содержат такую важную информацию, как метаданные, разрешения, универсальные коды ресурсов (URI), сведения о кэшировании, файлы cookie и многое другое. Заголовки запросов и ответов применяются в хорошо продуманных REST API вместе с обычными кодами состояния HTTP.

Рекомендации по использованию REST API

С одной стороны, гибкость является огромным преимуществом при проектировании REST API; с другой стороны, гибкость может стать причиной дефективного или неэффективного API. По этой причине профессиональные разработчики делятся передовыми практиками в спецификациях REST API.

Спецификация OpenAPI (OAS) определяет интерфейс для описания API, чтобы обеспечить разработчикам и приложениям полное понимание всех параметров и возможностей API, включая доступные конечные точки, разрешенные операции для каждой конечной точки, параметры операций, методы аутентификации и прочую информацию. Последняя версия, OAS3 (внешняя ссылка), содержит полезные инструменты, например OpenAPI Generator, для создания клиентов API и серверных заглушек на разных языках программирования.

Для обеспечения безопасности REST API также следует опираться на передовой отраслевой опыт, в частности использование алгоритмов хэширования для защиты паролей и HTTPS для безопасной передачи данных. Для ограничения прав доступа сторонних приложений можно использовать инфраструктуру авторизации, например OAuth 2.0 (внешняя ссылка). Кроме того, API может отклонять любые запросы, поступающие по истечении определенного периода времени, используя отметку времени в заголовке HTTP. Существуют и другие способы контроля доступа к API: проверка параметров и веб-маркеры JSON.

REST API и IBM Cloud

Перечисленные выше преимущества означают, что REST API остается неотъемлемой составляющей процесса разработки программного обеспечения, особенно с ростом спроса на более эффективные интерфейсы взаимодействия с клиентами и приложения для бизнеса и ИТ-операций.

Хорошим способом удовлетворить эти растущие требования является автоматизация. Прежде чем внедрять обширную автоматизацию, начните с небольших проектов, успешность которых можно измерить. Достигнутые результаты можно будет оптимизировать и распространить на новые процессы в других подразделениях организации. Работая с IBM, вы получите доступ к средствам автоматизации на основе ИИ, в том числе и к готовым процессам, которые помогут ускорить внедрение инноваций за счет интеллектуальной составляющей.

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

Сделайте следующий шаг:

  • Узнайте больше о предложении IBM Cloud Pak for Integration, в основе которого лежат базовые функции IBM API Connect, обеспечивающие архитекторам и администраторам полный контроль над жизненным циклом API.
  • Посетите раздел Документация API для IBM Cloud с подробной информацией об API, поддерживаемых IBM Cloud.
  • Заполните анкету для оценки зрелости интеграции по важнейшим параметрам и получите рекомендации в отношении дальнейших действий.
  • Загрузите Руководство по гибкой интеграции, в котором рассматриваются преимущества контейнерного, децентрализованного подхода к интеграции решений на основе микросервисов.

Начните работать с учетной записью IBM Cloud уже сегодня.