Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Гипермедиа как механизм состояния приложения ( HATEOAS ) - это компонент архитектуры приложения REST, который отличает его от других архитектур сетевых приложений.

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

Напротив, клиенты и серверы в CORBA взаимодействуют через фиксированный интерфейс, совместно используемый посредством документации или языка описания интерфейса (IDL).

Ограничения, накладываемые HATEOAS, разделяют клиент и сервер. Это позволяет функциональным возможностям сервера развиваться независимо.

Пример [ править ]

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

Например, этот запрос GET извлекает ресурс учетной записи, запрашивая подробности в представлении JSON: [2]

GET  / accounts / 12345  HTTP / 1.1 Хост :  bank.example.com Принять :  application / vnd.acme.account + json ...

Ответ такой:

HTTP / 1.1  200  OK Content-Type :  application / vnd.acme.account + json Content-Length :  ...{  "account" :  {  "account_number" :  12345 ,  "balance" :  {  "currency" :  "usd" ,  "value" :  100.00  },  "links" :  {  "deposit" :  "/ accounts / 12345 / deposit" ,  «снять» :  «/ счет / 12345 / снять» ,  «передать» :  «/ счет / 12345 / перевод» ,  «закрыть» :  «/ счет / 12345 / закрыть»  }  } }

Ответ содержит следующие возможные дополнительные ссылки: внесите депозит, снятие средств или перевод, или закройте счет.

Когда информация об учетной записи будет получена позже, счет будет превышен:

HTTP / 1.1  200  OK Content-Type :  application / vnd.acme.account + json Content-Length :  ...{  "account" :  {  "account_number" :  12345 ,  "balance" :  {  "currency" :  "usd" ,  "value" :  -25.00  },  "links" :  {  "deposit" :  "/ accounts / 12345 / deposit"  }  } }

Теперь доступна только одна ссылка: внести больше денег. В текущем состоянии другие ссылки недоступны. Отсюда и термин « Двигатель состояния приложения» . Возможные действия зависят от состояния ресурса.

Клиенту не нужно понимать все типы носителей и механизмы связи, предлагаемые сервером. Способность понимать новые типы мультимедиа может быть приобретена во время выполнения с помощью « кода по запросу », предоставляемого клиенту сервером. [3]

Истоки [ править ]

Ограничение HATEOAS является неотъемлемой частью функции «унифицированного интерфейса» REST, как это определено в докторской диссертации Роя Филдинга . [3] Филдинг далее описал эту концепцию в своем блоге. [1]

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

См. Также [ править ]

Ссылки [ править ]