Клиентская реализация REST, охватывающая ограничение HATEOAS?

Это может сработать:

function format_currency(v, number_of_decimals, decimal_separator, currency_sign){
  return (isNaN(v)? v : currency_sign + parseInt(v||0).toLocaleString() + decimal_separator + (v*1).toFixed(number_of_decimals).slice(-number_of_decimals));
}

Без циклов, без регулярных выражений, без массивов, без экзотических условных выражений.

17
задан Bill the Lizard 28 July 2012 в 00:51
поделиться

5 ответов

Принцип дизайна HATEOAS (REST также является набором принципов дизайна) означает, что каждый ресурс должен иметь не более одного фиксированного URL.

Все остальное, связанное с этим, должно быть динамически обнаружено из этого URL через "гипермедиа" ссылки.

Я только что запустил заглушку википедии здесь

1
ответ дан 30 November 2019 в 13:46
поделиться

Restfulie is фреймворк Ruby, Java и C #, целью которого является создание клиентов и серверов, использующих HATEOAS. Не использовал, но смотрится интересно.

Вот пример кода из их java-проекта :

Order order = new Order();

// place the order
order = service("http://www.caelum.com.br/order").post(order);

// cancels it
resource(order).getTransition("cancel").execute();

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

6
ответ дан 30 November 2019 в 13:46
поделиться

Рич,

Я сейчас работаю над фреймворком на стороне клиента RESTful для Джерси. Как только первоначальный дизайн немного стабилизируется, он будет добавлен в кодовую базу Джерси и после прохождения через сообщество для обзора должен в конечном итоге определить форму клиентской среды JAX-RS.

Недавно в списке пользователей Джерси велась оживленная дискуссия обо всем, что касается RESTful. https://jersey.dev.java.net/servlets/SummarizeList?listName=users

Пройдет около двух недель, прежде чем код станет общедоступным, и люди смогут поэкспериментировать.

Янв

0
ответ дан 30 November 2019 в 13:46
поделиться

Проблема с REST HTTP и HATEOAS заключается в том, что нет общего подхода к указанию ссылок, поэтому переходить по ссылкам сложно, поскольку их структура может меняться от поставщика услуг к другому. Некоторые будут использовать , другие будут использовать проприетарную структуру для ссылок, например. . Это не похоже на HTML или атом, где ссылка является частью определенного стандарта.

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

2
ответ дан 30 November 2019 в 13:46
поделиться

Первое, на что вам следует обратить внимание, - это обычный веб-браузер. Это стандарт для клиента, поддерживающего HATEOAS (по крайней мере, в некоторой степени).

Так работает Hypermedia. Это настолько просто, что это почти болезненно:

  1. вы указываете в браузере http://pigs-are-cool.org/
  2. браузер загружает страницу HTML, изображения, CSS и так далее.
    • На этом этапе приложение (ваш опыт просмотра) находится на определенном URI.
    • Браузер показывает содержимое этого URI
  3. вы видите ссылку в приложении
  4. вы нажимаете ссылку
  5. браузер переходит по ссылке
    • на данный момент приложение имеет другой URI.
    • Браузер показывает содержимое нового URI.

Теперь краткое объяснение того, как эти два термина относятся к просмотру веб-страниц:

  • Гипермедиа = HTML-страницы со встроенными ссылками
  • Состояние приложения = Что вы видите в браузере в любой момент времени.

Итак, HATEOAS на самом деле описывает, что происходит в веб-браузере, когда вы переходите с веб-страницы на веб-страницу:

HTML-страницы со встроенными ссылками управляют тем, что вы видите в браузере в любой момент времени

Термин HATEOAS - это просто абстракция от этого просмотра.

К другим примерам клиентских приложений RESTful относятся:

  • RSS и программы чтения лент. Они просматривают ссылки, предоставленные им пользователями
  • Большинство клиентов блогов AtomPub. Им нужен просто URI для документа служб, и оттуда они узнают, куда загружать изображения и сообщения в блогах, искать и так далее.
  • Вероятно, гаджеты Google (и аналогичные), но это просто браузеры с другой оболочкой.
  • Сканеры также являются клиентами RESTful, но они занимают определенную нишу.

Некоторые характеристики клиентского программного обеспечения RESTful:

  • Клиент работает с любым сервером, учитывая, что он имеет некоторый URI, и сервер отвечает ожидаемым результатом (например, для клиента блога Atom, документа сервисов Atom) .
  • Клиент ничего не знает о том, как сервер разрабатывает свои URI, кроме того, что он может узнать во время выполнения
  • . Клиент знает достаточно типов мультимедиа и связей, чтобы понять, что говорит сервер (например, Atom или RSS)
  • Клиент использует встроенные ссылки для поиска других ресурсов; некоторые автоматически (например, ) некоторые вручную (например, ).

Очень часто ими управляет пользователь, и их можно правильно назвать «пользовательскими агентами», за исключением, скажем, GoogleBot.

11
ответ дан 30 November 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: