REST API - что это? REST: перевод. Representational State Transfer
REST API (Representational State Transfer), или веб-службы RESTful, — что это? REST в переводе c английского «репрезентативная передача состояния». Это способ обеспечения взаимодействия между компьютерными системами в Интернете. REST-совместимые веб-службы, позволяющие запрашивающим системам получать доступ к текстовым представлениям веб-ресурсов и управлять ими, используя единый и предопределенный набор операций. Существуют и другие формы веб-служб, которые содержат свои собственные произвольные наборы операций, например WSDL и SOAP.
REST API: что это? Определение понятия
Веб-ресурсы изначально были определены во Всемирной паутине как документы или файлы, идентифицированные их URL-адресами. Сегодня они имеют гораздо более общее и абстрактное определение, охватывающее каждый предмет или сущность, которые могут быть идентифицированы, названы, адресованы или обработаны в Сети. В веб-службе REST API запросы, отравленные в URI-ресурса, вызывают ответ, который может быть оформлен в XML, HTML, JSON или в каком-либо другом формате. Ответ может подтвердить, что некоторые изменения были внесены в хранимый ресурс, также предоставить гипертекстовые ссылки на другие связанные ресурсы и их коллекции. Использование HTTP как наиболее распространенного протокола относится к типам доступных операций, которые предопределены командами PUT, DELETE, HTTP GET, POST.
Используя протоколы без учета состояния и стандартные операции, системы REST нацелены на быструю производительность, надежность и способность к росту путем повторного использования компонентов, которыми можно управлять и которые можно обновлять, не затрагивая систему в целом. Использование REST часто предпочтительнее, чем более тяжелый стиль SOAP (Simple Object Access Protocol), поскольку REST не использует полосы пропускания, что делает его более подходящим для использования в Интернете. Для подхода SOAP требуется запись или использование предоставленной серверной программы (для обслуживания данных) и клиентской программы (для запроса данных).
История технологии
Термин «репрезентативная передача состояния» был введен и определен в 2000 году Роем Филдингом в его диссертации «Архитектурные стили и дизайн сетевых архитектур программного обеспечения». Он выработал архитектурный стиль REST параллельно с HTTP 1.1 1996-1999 годов, основанный на существующем проекте HTTP 1.0 1996 года. В ретроспективном взгляде на развитие технологии Филдинг сказал о том, что на протяжении процесса стандартизации HTTP он был призван защищать выбор дизайна в Интернете. Это очень сложная задача в рамках процесса, принимающего предложения от кого-либо по теме, которая быстро становится центром всей отрасли.
У Филдинга были комментарии от более чем 500 разработчиков, многие из которых отличные инженеры с многолетним опытом. Он должен был объяснить все, начиная с самых абстрактных понятий веб-взаимодействия и заканчивая точными деталями синтаксиса HTTP. Этот процесс оттачивал его модель до основного набора принципов, свойств и ограничений, которые теперь называются REST.
Преимущества
Особенности стиля REST влияют на следующие архитектурные свойства:
- Производительность - взаимодействие компонентов является доминирующим свойством в восприятии пользователями производительности и результативности сети.
- Масштабируемость для поддержки максимального количества компонентов, тестирования REST API и взаимодействия между ними.
- Простота единого интерфейса и авторизации REST API.
- Модифицируемость компонентов для удовлетворения меняющихся потребностей (даже во время работы приложения).
- Видимость связи между составляющими и сервисными агентами.
- Возможность переносить компоненты, перемещая их программный код с данными.
- Надежность — высокая отказоустойчивость при наличии сбоев в составе, разъемов или данных.
Обусловлено разделение проблем между клиентами тем, что это REST API позволяет упрощать реализацию компонентов, уменьшает сложность семантики коннектора, повышает эффективность настройки производительности и повышает масштабируемость чистых серверных компонентов. Сложные системные ограничения позволяют посредникам-прокси, шлюзам и брандмауэрам внедряться в разных точках связи без изменения интерфейсов между компонентами, что позволяет им осуществлять REST-перевод сообщений или повышать производительность при помощи широкомасштабного общего кэширования. Примером REST API является тот факт, когда взаимодействие не зависит от состояния запросов, стандартные методы и типы медиа используются для обозначения семантики и обмена информацией, а ответы явно указывают на кешируемость.
Формальные и архитектурные ограничения
Шесть руководящих ограничений характеризуют систему RESTful. Они ограничивают способы, которыми сервер может обрабатывать и принимать запросы клиентов. Действуя в рамках этих ограничений, служба получает желаемые нефункциональные свойства, такие как производительность, масштабируемость, простота, изменчивость, видимость, мобильность и надежность. Если служба нарушает любые требуемые ограничения, ее нельзя считать RESTful.
Первые ограничения относятся к архитектурному стилю «клиент-сервер». Разделение проблем пользовательского интерфейса с проблемами хранения данных улучшает переносимость интерфейса пользователя на нескольких платформах. Он также улучшает масштабируемость за счет упрощения серверных компонентов. Возможно, наиболее значительным для Сети является то, что разделение позволяет компонентам развиваться самостоятельно, тем самым поддерживая требования интернет-масштаба к множеству организационных доменов.
Безопасность
REST не предоставляет встроенной поддержки безопасности. Это очень важно при проектировании веб-сервисов REST - требования безопасности и проектирования выполняются заранее. Веб-сервисы REST используют HTTP GET, POST, PUT и DELETE из CRUD-операций. PUT и DELETE не поддерживаются многими браузерами и чаще всего отключены на уровне сервера из-за возможного нарушения конфиденциальности. Если он не настроен должным образом на уровне сервера и клиента, любой посторонний пользователь сможет создать ресурс с помощью PUT-метода или уничтожить используемый ресурс DELETE. При разработке требований безопасности для веб-сервисов следует учитывать данные моменты.
Архитектурные элементы
Ключевым аспектом REST является характер и состояние его элементов данных. В стиле REST существует четыре понятия, описывающих поведение и состояние информации.
Ресурс — это объект (логический или физический), доступный в Интернете. Это может быть документ, хранящийся в файловой системе сервера или строка в таблице базы данных. Конечный пользователь взаимодействует с ресурсом для достижения определенной цели. Для проектирования системы с помощью REST разработчик должен думать о бизнес-объектах как ресурсах и о том, как они могут быть адресованы.
URI - уникально идентифицирует ресурс. Этот параметр делает ресурс адресным и может быть изменен. Ресурсы изменяются с использованием протокола приложения - такого как HTTP.
Представление - это данные/метаданные состояния ресурса в момент времени. Клиент получает представление ресурса при запросе URI. Вид ресурса может быть закодирован в одном или нескольких передаваемых форматах, таких как XML, HTML, JSON, RSS, REST API java. Эти форматы могут быть согласованы при помощи механизма согласования контента.
Ссылка - позволяет приложению выполнять переход из одного состояния в другое. Каждый ресурс должен быть подключен к другим ресурсам. Представление должно предложить ссылку на следующий переход. Хорошо связанное приложение позволяет пользователю самостоятельно открыть интерфейс.
Коннектор
Разъем соединителя представляет собой абстрактный интерфейс, который опосредует связь между компонентами. Поскольку взаимодействия REST не имеют состояния, соединитель не должен хранить информацию о состоянии. Следовательно, связь между компонентами может происходить параллельно.
Клиент и сервер являются основными REST-коннекторами. Клиент инициирует запрос, а сервер его обрабатывает.
Кеш - еще один вид разъема. Кеширование может быть реализовано на клиентских, серверных или промежуточных уровнях. Это уменьшает время ожидания и использование сети.
Компоненты
Компоненты выполняют набор четко определенных методов на ресурсе, создающем представление для захвата текущего или предполагаемого состояния.
User-Agent - использует клиентский соединитель для инициирования запроса.
Origin-сервер - использует серверный коннектор для ответа на запрос.
Прокси - посредник, используемый на стороне клиента для обеспечения инкапсуляции интерфейса другими службами. Он также выполняет перевод данных и защиту.
Шлюз - посредник, используемый на сервере для обеспечения инкапсуляции интерфейса другими службами.
Перспективы развития
Всегда актуален вопрос: REST API — что это для современных интернет-технологий? REST - основа современной веб-архитектуры, которая развивается путем анализа недостатков уже существующих стилей и введения новых дополнений к ней.
Цели REST API — что это? Это стремление использовать существующие стили с координированным набором ограничений для минимизации сетевой связи и максимизировать независимую эволюцию компонентов для достижения масштабируемости. Это новая архитектура распределенной системы гипермедиа. С появлением смартфонов, планшетов и т. п. гаджетов будет внедряться сеть и ее масштабируемость.