Что такое REST API

Что такое REST API

Когда пользователи заходят на сайты, веб-браузер отправляет запросы на нужные серверы, получает от них ответы и выводит запрашиваемую страницу. Информация о сайте на разных серверах хранится по-разному: для того, чтобы браузеры понимали, какие именно данные необходимо запрашивать, а серверы знали, какие ответы выдавать, используются разные виды программных интерфейсов приложений (API). Одним из наиболее распространенных методов работы API считается REST (второе название RESTful). В этой статье разберемся, что такое REST API, в соответствии с какими принципами и методами она работает и где применяется.

REST API – что это?

Технология REST API обеспечивает получение и модифицирование данных и состояний удаленных приложений путем передачи HTTP-вызовов посредством интернет-каналов или любых других сетей. Простыми словами, REST API предусматривает предоставление доступа серверного ПО к собственным данным клиентским приложениям по определенным URL-адресам.

Базовые понятия Rest API – HTTP-протокол и API

Суть термина REST API можно понять, расшифровав две аббревиатуры:

  • REST (Representational State Transfer, англ. – передача состояния представления) – метод, посредством которого создается API.
  • API (Application Programming Interface, англ. – программный интерфейс приложения) – программа со специальным кодом, обеспечивающая взаимодействие между двумя приложениями или программы с сервером через сеть.

Для связи программ по технологии REST API используется протокол HTTP (зашифрованный и более безопасный вариант – HTTPS). HTTP (Hypertext Transfer Protocol) является стандартным протоколом для интернета и создан специально, чтобы передавать гипертекст и данные любых других типов.

Для наглядности возьмем ссылку http://my-site.com/content, которая состоит из двух частей: адреса сайта (http://my-site.com) и адреса удаленного сервера (/content). Когда пользователь вводит URL-адрес http://my-site.com/content в строку браузера, технически он обращается к серверу my-site.com и запрашивает ресурс с названием /content. Если сформулировать это простыми словами, то HTTP-запрос работает на по принципы «иди вот сюда и принеси вот это».

По адресу my-site.com может находиться приложение, к которому обращаются другие программы. Чтобы приложение понимало, какая функция нужна клиентской программе, используются специальные адреса. Для этого как раз применяется технология REST API.

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

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

Технология работает на базе семи принципах, один из которых является опциональным. Прежде, чем начать их описывать, уточним, что в вебе ресурсом называют любые данные: текстовые, графические (изображения, видео), звуковые (аудио), программные (целые приложения).

Клиент-серверная модель (Client-Server)

Клиентом может быть человек или программная исистема, которая использует API. Например, пользовательский интерфейс сайта. В REST API коды запросов остаются на клиентской стороне, а коды доступа к ресурсам — на сервере. Это облегчает работу API, перенос пользовательского интерфейса на другие платформы, улучшает масштабирование серверного хранения данных.

Отсутствие состояния (Stateless)

Серверы не должны хранить записи о состоянии (или о выполненных операциях) клиентов. Все клиентские запросы должны содержать только те сведения, которые нужны, чтобы получить данные от серверов.

Кэширование (Casheable)

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

Единообразие интерфейса (Uniform Interface)

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

Многоуровневая система (Layered System)

RESTful имеет многоуровневую системную архитектуру, при которой клиенты могут подключаться к остальным посредникам и получать необходимые ответы с серверов. Серверы также могут передавать запросы другим серверам. Благодаря этому можно спроектировать веб-службу REST API для работы с несколькими серверами на нескольких уровнях (с разной безопасностью, приложениями, бизнес-логикой), причем эти уровни будут оставаться невидимыми для клиентов.

Код по требованию (Code on Demand)

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

Начало от нуля (Starting with the Null Style)

Все клиентские запросы к серверу проходят через одну точку входа. Все дальнейшее взаимодействие обеспечивается самими серверами.

Методы REST API

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

В целом API-система предполагает использование четырех классических методов:

  • GET используется для получения данных о ресурсе. Такие запросы обеспечивают возврат данных с серверов без их смены и удаления. Так, в бухгалтерских приложениях GET /invoices запросы открывают перечень имеющихся счетов.
  • POS позволяет создавать новые записи. В описываемом примере POST /invoices используют при создании нового счета на оплату.
  • PUT с помощью этого метода редактируют записи. К примеру, PUT /invoices позволяет исправить номера счетов, суммы, реквизиты.
  • DELETE: позволяет удалять записи. В бухгалтерской программе DELETE /invoices обеспечивает удаление старых счетов, которые уже были оплачены контрагентами.

Эти функции могут использоваться одной программой для обращения к ресурсам. Создание API-системы с помощью ресурсов, протокола HTTP и разных запросов как раз и представляет собой технологию REST API.

Как работает RESTful

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

  • http://myhotel.com/nomera/econom
  • http://myhotel.com/nomera/standart
  • http://myhotel.com/nomera/lux

С помощью этих URL однозначно определяются ресурсы на сервисе — сведения о наличии доступных номеров конкретных классов. Взаимодействия с такими ресурсами REST API осуществляется с помощью CRUD-команд HTTP-протокола. Например, GET standard позволяет клиенту получить информацию о номерах стандартного класса. Благодаря кэшированию таких запросов в RESTful клиентам нет необходимости каждый раз обращаться к серверному приложению при повторных запросах.

Этот принцип позволяет расставлять приоритеты: например, использовать более производительные серверы при запросах на люкс-номера. Такая система легко масштабируется: если в отеле будут появляться новые классы номеров, команды будут обращаться напрямую к ресурсам по добавленным URL-адресам.

Архитектура

Как уже отмечалось, REST API работает на протоколе HTTP. Для передачи запросов GET, DELETE, POST и PUT в REST API используются идентификаторы CRUD:

  • create (создание)
  • read (чтение)
  • update (обновление)
  • delete (удаление).

Это стандартные действия для работы с ресурсами. Каждый HTTP-запрос создается со своим заголовком и описанием объекта на конкретном сервере, что и представляет его состояние.

Для чего используют REST API

REST API является самым популярным решением, которое работает на основе НТТР-запросов. Благодаря этому RESTful используется в различных целях, позволяя:

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

Где применяют

Архитектуру REST API используют в ряде случаев:

  • при ограниченной пропускной способности соединения с серверами;
  • необходимости кэширования запросов;
  • значительном масштабировании приложений или сайтов;
  • разбиении проекта на микросервисы;
  • использовании в софте либо на сайте технологии AJAX, обеспечивающей фоновый обмен данных с серверами.

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

Что еще важно знать при работе с REST API

Любые запросы в REST API сообщают о результате работы приложений посредством числовых кодов – статусов HTTP-запросов. Так, при успешном редактировании записей на серверах пользователю получает код ошибки 200, при блокировании запроса в целях безопасности выдаются коды 401 либо 403, а при неисправном исполнении вследствие ошибки на сервере отображается код 500. Выдача кодов ошибок взаимодействия приложений с сервером является аналогом уведомлений пользователей о результатах работы офлайн-программ.

Архитектура REST API предусматривает возможность обмена различными данными. При помощи такого инструмента возможна передача файлов со специальными форматами XML, JSON, Protobuf и пр. Также существуют другие варианты создания API-систем (JSON-RPC, XML-RPC, GraphQL), однако на текущий момент RESTful остаётся наиболее востребованным и распространённым инструментом в построении взаимодействия между удалёнными программами.

Итоги

Среди ключевых особенностей REST API стоит выделить:

  • RESTful является архитектурным стилем создания API. Технология не имеет строгих ограничений в используемых протоколах и не базируется на собственных методиках. Зачастую сервисы используют стандартный протокол HTTP, а передача файлов осуществляется в форматах XML либо JSON.
  • REST API работает на базе семи принципов: клиент-серверной модели, отсутствии состояния, кэшировании, единообразии интерфейса, многоуровневой системе, начале от нуля, кодах по требованию. Все принципы являются обязательными, кроме последнего.
  • Архитектура RESTful позволяет делать сервис отказоустойчивым, гибким и производительным, а при его изменении и масштабировании не возникают особые трудности.

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