stringtranslate.com

ОТДЫХ

REST ( Representational State Transfer ) — это программный архитектурный стиль , который был создан для руководства проектированием и разработкой архитектуры для Всемирной паутины . REST определяет набор ограничений для того , как должна вести себя архитектура распределенной гипермедиа- системы масштаба Интернета , такой как Веб. Архитектурный стиль REST подчеркивает единообразные интерфейсы , независимое развертывание компонентов , масштабируемость взаимодействий между ними и создание многоуровневой архитектуры для содействия кэшированию с целью сокращения воспринимаемой пользователем задержки , обеспечения безопасности и инкапсуляции устаревших систем . [1]

REST использовался во всей индустрии программного обеспечения для создания надежных веб-приложений без сохранения состояния . Приложение, которое придерживается архитектурных ограничений REST, можно неформально описать как RESTful , хотя этот термин чаще ассоциируется с разработкой API на основе HTTP и тем, что широко считается передовой практикой в ​​отношении «глаголов» ( методов HTTP ), на которые реагирует ресурс , имея при этом мало общего с REST в его первоначальной формулировке, а часто даже противореча этой концепции. [2]

Принцип

Термин «передача репрезентативного состояния» был введен и определен в 2000 году ученым-компьютерщиком Роем Филдингом в его докторской диссертации. Он означает, что сервер ответит представлением ресурса (сегодня это чаще всего будет документ HTML , XML или JSON ), и этот ресурс будет содержать гипермедийные ссылки, по которым можно перейти, чтобы изменить состояние системы. Любой такой запрос, в свою очередь, получит представление ресурса и т. д.

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

История

Рой Филдинг выступает на OSCON 2008

Веб начал входить в повседневное использование в 1993–1994 годах, когда веб-сайты общего пользования начали становиться доступными. [3] В то время существовало лишь фрагментарное описание архитектуры Веба, и в отрасли оказывалось давление с целью согласования некоторого стандарта для протоколов веб-интерфейса. Например, несколько экспериментальных расширений были добавлены в протокол связи (HTTP) для поддержки прокси-серверов , и предлагалось больше расширений, но была необходимость в формальной архитектуре Веба, с помощью которой можно было бы оценить влияние этих изменений. [4]

Рабочие группы W3C и IETF совместно начали работу над созданием формальных описаний трех основных стандартов Интернета: URI , HTTP и HTML . Рой Филдинг принимал участие в создании этих стандартов (в частности, HTTP 1.0 и 1.1, а также URI), и в течение следующих шести лет он создал архитектурный стиль REST, протестировав его ограничения на стандартах протоколов Интернета и используя его как средство для определения архитектурных улучшений — и выявления архитектурных несоответствий. Филдинг определил REST в своей докторской диссертации 2000 года «Архитектурные стили и проектирование сетевых программных архитектур» [1] [5] в Калифорнийском университете в Ирвайне .

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

По своей природе архитектурные стили не зависят от какой-либо конкретной реализации, и хотя REST был создан как часть разработки веб-стандартов, реализация веба не подчиняется всем ограничениям в архитектурном стиле REST. Несоответствия могут возникать из-за незнания или упущения, но существование архитектурного стиля REST означает, что их можно идентифицировать до того, как они станут стандартизированными. Например, Филдинг определил встраивание информации о сеансе в URI как нарушение ограничений REST, которое может негативно повлиять на общее кэширование и масштабируемость сервера. HTTP-cookie также нарушают ограничения REST [4], поскольку они могут стать несинхронизированными с состоянием приложения браузера, что делает их ненадежными; они также содержат непрозрачные данные, которые могут представлять проблему для конфиденциальности и безопасности .

Архитектурные свойства

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

Сильное разделение клиента и сервера вместе с текстовой передачей информации с использованием единого протокола адресации обеспечило основу для удовлетворения требований Интернета: расширяемость , анархическая масштабируемость [ необходима ссылка ] и независимое развертывание компонентов, крупномасштабная передача данных и низкий порог входа для читателей, авторов и разработчиков контента.

Модель « сущность -связь» концепций, выраженных в архитектурном стиле REST

Ограничения архитектурного стиля REST влияют на следующие архитектурные свойства: [1] [6]

Архитектурные ограничения

Архитектурный стиль REST определяет шесть руководящих ограничений. [6] [8] Когда эти ограничения применяются к архитектуре системы, она приобретает желаемые нефункциональные свойства , такие как производительность, масштабируемость, простота, модифицируемость, видимость, переносимость и надежность. [1]

Формальные ограничения REST следующие: [9]

Единый интерфейс

Ограничение единого интерфейса является основополагающим для проектирования любой системы RESTful. [1] Оно упрощает и разделяет архитектуру, что позволяет каждой части развиваться независимо. Четыре ограничения для этого единого интерфейса:

Модели классификации

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

Смотрите также

Ссылки

  1. ^ abcdef Филдинг, Рой Томас (2000). "Глава 5: Передача репрезентативного состояния (REST)". Архитектурные стили и проектирование сетевых программных архитектур (доктор философии). Калифорнийский университет в Ирвайне. Архивировано из оригинала 2021-05-13 . Получено 2004-08-17 .
  2. ^ Филдинг, Рой Т. (2008-10-20). «REST APIs должны быть управляемы гипертекстом». roy.gbiv.com. Архивировано из оригинала 2010-03-18 . Получено 2016-07-06 .
  3. ^ Couldry, Nick (2012). Медиа, общество, мир: социальная теория и практика цифровых медиа. Лондон: Polity Press. стр. 2. ISBN 9780745639208. Архивировано из оригинала 2024-02-27 . Получено 2021-06-09 .
  4. ^ ab Fielding, Roy Thomas (2000). "Глава 6: Опыт и оценка". Архитектурные стили и проектирование сетевых программных архитектур (Ph.D.). Калифорнийский университет в Ирвайне. Архивировано из оригинала 26.03.2023 . Получено 21.06.2023 .
  5. ^ "Fielding discussions the definition of the REST term". groups.yahoo.com. Архивировано из оригинала 5 ноября 2015 г. Получено 2017-08-08 .
  6. ^ ab Erl, Thomas; Carlyle, Benjamin; Pautasso, Cesare; Balasubramanian, Raj (2012). "5.1". SOA с REST: принципы, шаблоны и ограничения для создания корпоративных решений с REST . Upper Saddle River, Нью-Джерси: Prentice Hall. ISBN 978-0-13-701251-0.
  7. ^ ab Fielding, Roy Thomas (2000). "Глава 2: Архитектуры сетевых приложений". Архитектурные стили и проектирование архитектур сетевого программного обеспечения (Ph.D.). Калифорнийский университет в Ирвайне. Архивировано из оригинала 2014-12-16 . Получено 2014-04-12 .
  8. ^ Ричардсон, Леонард; Руби, Сэм (2007). RESTful Web Services . Севастополь, Калифорния: O'Reilly Media. ISBN 978-0-596-52926-0.
  9. ^ "Что такое REST API?". www.visual-paradigm.com . Архивировано из оригинала 2024-02-24 . Получено 2024-02-24 .
  10. ^ Гупта, Локеш (2 июня 2018 г.). "REST HATEOAS". Учебник REST API . RESTfulAPI.net. Архивировано из оригинала 7 апреля 2019 г. Получено 10 марта 2019 г.
  11. ^ "Классификация HTTP API". algermissen.io . Архивировано из оригинала 2023-01-29 . Получено 2023-01-29 .
  12. ^ Иван Сальвадори, Фрэнк Сикейра (июнь 2015 г.). «Модель зрелости для семантических RESTful Web API». Конференция: Веб-сервисы (ICWS), Международная конференция IEEE 2015 г. OnAt . Нью-Йорк. Архивировано из оригинала 27.02.2024 . Получено 14.12.2020 через Researchgate.


Дальнейшее чтение