2015-04-12 5 views
27

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

ответ

3

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


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


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

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

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

51

Существует много путаницы в этом, потому что большинство приложений, которые называют себя 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, которые вы найдете в Интернете, не следуют всему этому. Большинство из них - это просто API-интерфейсы HTTP, которые следуют некоторым ограничениям REST, иногда потому, что им действительно не нужны все они, иногда потому, что разработчики считают, что REST действительно есть.

+0

Как приложение/vnd.mycompany.user.v1 + xml передает пользователю информацию, которая должна быть проанализирована? – vishnu

+0

Это не так. Документация, описывающая 'application/vnd.mycompany.user.v1 + xml', делает. –

+0

Является ли это HATEOAS, если приложение предоставляет только ссылку на источник, созданный POST в заголовке местоположения ответа? Или термин hypermedia включает только ссылки, которые содержатся внутри тела? – Marv

Смежные вопросы