Как используется REST API в мобильной разработке?

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

Про API

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

API – это, прежде всего, интерфейс (см. расшифровку выше). Функции интерфейса легко объяснить на примере чего-то привычного и осязаемого - чего-то из нашей обычной жизни. Например, автомобиля. Для чего мы обычно используем машину? Согласитесь, базовая задача авто – переместить нас из одного места в другое. Все остальное ­– перевозка вещей, заработок или, скажем, гонки – потом.

rest api что такое

Следующий вопрос – за счет чего автомобиль передвигается и перемещает нас? Даже не зная устройства машины в подробностях, мы можем утверждать, что у нее есть кузов, шасси, двигатель. Эти главные части состоят из множества более мелких компонентов, узлов, деталей и механизмов. А в совокупности все они, как бы образуя одно авто, и позволяют выполнять транспортному средству его базовую функцию.

Всего этого мы не видим, но при этом можем управлять машиной. В данном случае мы как раз и взаимодействуем с интерфейсом, чтобы осуществлять управление. Руль, педали, рычаги, магнитола, кондиционер и т.п. – это как раз тот интерфейс, относительно простой и доступный водителю, который позволяет управлять более сложными механизмами и процессами. Сюда же можно отнести и множество других жизненных примеров:

  1. бытовая техника;
  2. станки на производстве;
  3. ваш смартфон;
  4. игровая приставка и многое другое.

Итак, интерфейс – это некая граница и связь между разными системами (в примере с авто – транспортным средством и водителем), которая за счет определенных предустановленных алгоритмов и правил регулирует их отношения.

Теперь переходим к первой части аббревиатуры API - Application Programming. Здесь мы уже видим явные отсылки к ПО - вместо машины и водителя в данном случае появляются различные программы, web-сервисы и пр.

Про REST API

При всем этом REST API — как бы одно из конкретных воплощений API. Если API - это архитектура, то REST API – архитектурное направление. REST API — определенный механизм коммуникации web-сайтов и мобильных приложений с сервером. И REST (Representational State Transfer, или «передача состояния представления») здесь означает именно вариант реализации API (посредством HTTP).

Так, при желании посмотреть ролик на хостинге REST API сначала выполняет определенный алгоритм, а уже потом запускает видео с сервера на вашем устройстве. Именно REST API на сегодняшний день самый популярный и востребованный вариант API, который уверенно потеснил все другие (SOAP и WSDL).

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

REST API включает в себя 7 базовых принципов:

  1. клиент отделен от сервера – интерфейс пользователя, например, поиск на сайте, включает в себя код запросов, а код доступа к информации функционирует со стороны сервера; такое решение существенно упрощает API, дает возможность, например, более простого переноса интерфейса пользователя на другие площадки, то есть полноценного и при этом быстрого масштабирования сайта или приложения;
  2. нет записи состояния клиента – сервер не должен сохранять данные о действиях клиента, но содержание самого запроса все же позволяет выполнить его – получить необходимую информацию;
  3. кэшируемость – в запросе посредством REST API указывается, необходимо ли сохранять информацию в особом буфере под частые запросы; в этом случае клиент имеет возможность получать информацию при аналогичном запросе уже из этого буфера без непосредственного обращения к серверу;
  4. единство интерфейса – в REST API данные запрашиваются через один URL посредством стандартных протоколов (HTTP), это также делает архитектуру мобильного приложения (сайта) проще, а коммуникацию с сервером логичнее;
  5. многоуровневость - REST API сервера часто находятся на нескольких уровнях, каждый из них осуществляет взаимодействие со своими соседями, но не с прочими уровнями;
  6. код по запросу – сервер посылает пользователю код (в описанном выше примере с видео – скрипт для активации ролика); таким образом, сам код интернет-сайта или мобильного приложения остается максимально простым и дополнительно усложняется лишь при необходимости;
  7. начало от нуля – в случае REST API клиенту доступна лишь одна точка входа на сервер, далее коммуникация обеспечена со стороны последнего.

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

rest api

REST API традиционно базируется на стандартном протоколе HTTP. Объекты на сервере имеют свой уникальный URL. Представьте, в приложении для бронирования номеров гостиницы можно забронировать номера 3-х классов. В REST API у каждого из них отдельный URL, который однозначно характеризует тот или иной класс — скажем, данные о доступности номеров. Это позволяет будущему постояльцу осуществлять выбор и заказывать свободные апартаменты. Кроме того, при запросе клиента через REST API информация кэшируется — аналогичные запросы уже не пойдут напрямую на сервер. Также подобная архитектура дает возможность выявить главное в обслуживании. Например, необходимость применения более мощных серверов для работы с номерами класса люкс. Еще ее значительно проще масштабировать.

REST API в приложениях

Так, как же применяется REST API в мобильной разработке?

И здесь нам снова необходимо для начала копнуть чуть глубже. Вы точно знаете, что такое мобильное приложение? Ведь мы с вами (обычные пользователи) обычно видим только его визуальную, внешнюю оболочку (или UI — User Interface). Но разработка приложения связана с необходимостью решения еще целого ряда важных вопросов – где хранить данные, как принимать оплату и взаимодействовать с игроком или покупателем, каким образом отправлять сообщения и т.д. (вспоминаем пример с автомобилем!). И что из всего этого требует REST API? Ничего. Если, конечно, речь идет всего об одном устройстве.

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

В этой же категории важных задач – желание предоставить доступ пользователю к платной информации или возможностям. Например, чтобы смс-агрегатор выполнял свою работу по отправке сообщений, совсем не надо знать устройство мобильных сетей (и снова вспоминаем авто). Достаточно интегрироваться с REST API площадки и применить подходящий API-метод.

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

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