Что такое гипермедиа, средства гипермедиа, гипермедиа форматы

В настоящее время я читаю книгу "Отдых на практике". Я не могу понять следующую терминологию: гипермедиа, формат гипермедиа, средства гипермедиа, протокол доменных приложений. Автор предлагал использовать формат гипермедиа для домена. Я не мог понять это. Я googled эти условия, но не смог найти правильный ответ. Может ли кто-нибудь объяснить эти термины и почему нам нужны форматы гипермедиа для домена, а не application/xml?

Ответ 1

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

Hypermedia - это обобщение гипертекста для контента, отличного от HTML. Вы можете сказать, что гипертекст - это подмножество гипермедиа. Hypermedia может быть HTML в браузере со всеми ссылками, кнопками и всем, что отображалось, чтобы вы могли просматривать веб-сайт, или это может быть документ XML или JSON, предназначенный для анализа автоматическим клиентом, который также будет следить за ссылками и действиями, такими как человек будет делать с браузером, щелкая визуализированные ссылки и кнопки.

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

Это проще, чем кажется. Это просто означает, что взаимодействие между клиентом и REST-приложением должно быть точно таким же, как просмотр веб-сайта человеком. Возьмите, например, Stack Overflow. Есть пользователи, вопросы и ответы. Когда вы хотите просмотреть список своих вопросов, вы не заходите на сайт документации, не получаете шаблон URI для перечисления своих вопросов, не заполняете его идентификатором пользователя и не вставляете его на свой коричневый. Вы просто нажимаете на ссылку на другой документ, описываемый как список вопросов, и вам даже не волнует, что такое точный URI. То, что HATEOAS означает на практике.

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

Элементы управления Hypermedia - это комбинации методов протокола и связей в формате гипермедиа, которые сообщают клиенту, какие переходы состояния доступны и как их выполнять. Например, вопрос может иметь ссылку rel=post_answer, которая ожидает представления ответа как полезную нагрузку метода POST и создаст для него новый ресурс ответа.

После того, как вы определили набор форматов гипермедиа, для определения того, какой формат гипермедиа используется для конкретного взаимодействия, вам нужен тип содержимого для домена. Общий медиа-тип типа application/xml сообщает клиенту, как анализировать формат данных, он ничего не говорит об информации, извлеченной парсером. Например, предположим, что документ имеет тип медиатекста application/vnd.mycompany.user.v1+xml, клиент знает его представление 1.0 ресурса пользователя в формате XML. Если вы измените ресурс, добавив или удалив свойства, ссылки и т.д., Вы можете изменить номер версии, и клиенты не сломаются, так как они могут запросить версию, для которой они были реализованы, используя заголовок Accept. Вы также можете предоставить несколько форматов для одного и того же ресурса, таких как XML или JSON, и даже довольно понятное для человека представление в HTML.

Когда вы объединяете все вместе - базовый протокол, HTTP; контракты, определенные форматами гиперссылок и типами носителей - у вас есть Протокол приложений домена, который представляет собой весь набор ресурсов и доступных состояний, объявленных вашим приложением.

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

Ответ 2

Hypermedia = тот факт, что клиент и сервер говорят в терминах некоторого единообразного представления, например: гиперссылки.


HyperMedia Control = ресурс должен быть выполнен на нем. Так, например, продукт представлен гиперссылкой domain/product/001 то ресурс можно управлять (редактировать и удалять) с помощью домена/продукта/001/редактирования гипермедиа и домена/продукта/001/удалить.


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

Но системы рассматривались как взаимодействия непосредственно взаимодействий модели и, следовательно, напрямую передавали гиперссылки. Пример примера http://www.masterkube.com/hateoas_technology.html здесь.

Надеюсь, это поможет.