stringtranslate.com

ОТДЫХ

REST ( передача репрезентативного состояния ) — это архитектурный стиль программного обеспечения , созданный для руководства при проектировании и разработке архитектуры Всемирной паутины . 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, которое может негативно повлиять на общее кэширование и масштабируемость сервера. Файлы cookie HTTP также нарушают ограничения REST, поскольку они могут рассинхронизироваться с состоянием приложения браузера, что делает их ненадежными; они также содержат непрозрачные данные, которые могут представлять угрозу конфиденциальности и безопасности .

Архитектурные объекты

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

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

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

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

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

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

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

Клиент-серверная архитектура

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

Безгражданство

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

Кэшируемость

Как и во Всемирной паутине, клиенты и посредники могут кэшировать ответы. Ответы должны явно или неявно определять себя как кэшируемые или некэшируемые, чтобы клиенты не могли предоставлять устаревшие или неподходящие данные в ответ на дальнейшие запросы. Хорошо управляемое кэширование частично или полностью исключает некоторые взаимодействия клиент-сервер, что еще больше повышает масштабируемость и производительность. Кэширование может выполняться на клиентском компьютере в памяти или в хранилище кэша браузера. Кроме того, кеш может храниться в сети доставки контента (CDN).

Многоуровневая система

Клиент обычно не может определить, подключен ли он напрямую к конечному серверу или к посреднику на этом пути. Если между клиентом и сервером установлен прокси-сервер или балансировщик нагрузки , это не повлияет на их связь, и не возникнет необходимости обновлять код клиента или сервера. Промежуточные серверы могут улучшить масштабируемость системы , обеспечивая балансировку нагрузки и предоставляя общий кэш. Кроме того, безопасность может быть добавлена ​​как уровень поверх веб-сервисов, отделяя бизнес-логику от логики безопасности. [9] Добавление безопасности в качестве отдельного уровня обеспечивает соблюдение политик безопасности . Наконец, промежуточные серверы могут вызывать несколько других серверов для генерации ответа клиенту.

Код по запросу (необязательно)

Серверы могут временно расширять или настраивать функциональность клиента путем передачи исполняемого кода: например, скомпилированных компонентов, таких как Java-апплеты , или клиентских сценариев, таких как JavaScript .

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

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

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

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

Применяется к веб-сервисам

API-интерфейсы веб-сервисов , которые соответствуют архитектурным ограничениям REST, называются API-интерфейсами RESTful. [13] API RESTful на основе HTTP определяются со следующими аспектами: [14]

В отличие от веб-сервисов на основе SOAP , для веб-API RESTful не существует «официального» стандарта. Это связано с тем, что REST — это архитектурный стиль, а SOAP — это протокол. REST сам по себе не является стандартом, но реализации RESTful используют такие стандарты, как HTTP , URI , JSON и XML . Многие разработчики описывают свои API как RESTful, даже несмотря на то, что эти API не удовлетворяют всем описанным выше архитектурным ограничениям (особенно ограничениям единого интерфейса). [2] Большинство API, претендующих на RESTful, на самом деле соответствуют только уровню 2 модели зрелости Ричардсона .

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

Рекомендации

  1. ^ abcdef Филдинг, Рой Томас (2000). «Глава 5: Передача представительского состояния (REST)». Архитектурные стили и проектирование сетевых архитектур программного обеспечения (доктор философии). Калифорнийский университет в Ирвайне. Архивировано из оригинала 13 мая 2021 г. Проверено 17 августа 2004 г.
  2. ^ аб Филдинг, Рой Т. (20 октября 2008 г.). «REST API должны управляться гипертекстом». roy.gbiv.com. Архивировано из оригинала 18 марта 2010 г. Проверено 6 июля 2016 г.
  3. ^ Моудри, Ник (2012). СМИ, общество, мир: социальная теория и практика цифровых медиа. Лондон: Полити Пресс. п. 2. ISBN 9780745639208.
  4. ^ Филдинг, Рой Томас (2000). «Глава 6: Опыт и оценка». Архитектурные стили и проектирование сетевых архитектур программного обеспечения (доктор философии). Калифорнийский университет в Ирвайне. Архивировано из оригинала 26 марта 2023 г. Проверено 21 июня 2023 г.
  5. ^ «Филдинг обсуждает определение термина REST» . группы.yahoo.com. Архивировано из оригинала 5 ноября 2015 года . Проверено 8 августа 2017 г.
  6. ^ аб Эрл, Томас; Карлайл, Бенджамин; Паутассо, Чезаре; Баласубраманиан, Радж (2012). «5.1». SOA с REST: принципы, шаблоны и ограничения для создания корпоративных решений с помощью REST . Река Аппер-Сэддл, Нью-Джерси: Прентис-Холл. ISBN 978-0-13-701251-0.
  7. ^ аб Филдинг, Рой Томас (2000). «Глава 2: Архитектура сетевых приложений». Архитектурные стили и проектирование сетевых архитектур программного обеспечения (доктор философии). Калифорнийский университет в Ирвайне. Архивировано из оригинала 16 декабря 2014 г. Проверено 12 апреля 2014 г.
  8. ^ Ричардсон, Леонард; Руби, Сэм (2007). RESTful веб-службы . Севастополь, Калифорния: O'Reilly Media. ISBN 978-0-596-52926-0.
  9. ^ Ланге, Кеннет (2016). Маленькая книга по REST-сервисам. Копенгаген. п. 19. Архивировано из оригинала 18 августа 2019 года . Проверено 18 августа 2019 г.{{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  10. Гупта, Локеш (2 июня 2018 г.). "РЕСТ ХАТЕОАС". Учебное пособие по REST API . RESTfulAPI.net. Архивировано из оригинала 7 апреля 2019 года . Проверено 10 марта 2019 г.
  11. ^ «Классификация HTTP API» . algermissen.io . Архивировано из оригинала 29 января 2023 г. Проверено 29 января 2023 г.
  12. ^ Иван Сальвадори, Фрэнк Сикейра (июнь 2015 г.). «Модель зрелости для семантических веб-API RESTful». Конференция: Веб-сервисы (ICWS), 2015 Международная конференция IEEE OnAt . Нью-Йорк – через Researchgate.
  13. ^ Гупта, Локеш. «Что такое REST API». Учебное пособие по RESTful API . Архивировано из оригинала 2 октября 2016 года . Проверено 29 сентября 2016 г.
  14. ^ Ричардсон, Леонард; Амундсен, Майк (2013), Веб-API RESTful , O'Reilly Media, ISBN 978-1-449-35806-8


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