Реализация REST Hypermedia Constraint с двумя бэкэнд-сервисами - PullRequest
0 голосов
/ 02 марта 2012

Я пытаюсь создать систему, которая использует nodejs с express для рендеринга html-страниц на основе данных из другой внутренней службы. Внутренний сервис предоставляет данные JSON, которые сервер nodejs использует для визуализации html, а затем передает их в браузер. Читая о REST и ограничении Hyemedia, я хочу использовать это в дизайне, но не могу понять это. Простым примером может служить страница со списком элементов, в которой каждый элемент представляет собой ссылку, по которой можно перейти, чтобы получить полную информацию об этом элементе. Так что бэкэнд-сервис может создать JSON, который выглядит как

{
  "title": "List of items"
  "self": "http://api.hostname.com/items
  [
    { 
      "title":"item1",
      "url": "http://api.hostname.com/items/1
    }
    { 
      "title":"item2",
      "url": "http://api.hostname.com/items/2
    }        { 
      "title":"item3",
      "url": "http://api.hostname.com/items/3
    }
}

Затем я должен сделать так, чтобы nodejs отобразил страницу в формате html со списком ссылок, используя «title» для имени. Вопрос в том, что я не знаю, что использовать для href. Это сработало бы, если бы href относился к представлению с элементом рендеринга, как

href="/items/2

но у меня нет возможности передать поле url обратно узлу, чтобы узел мог передать его бэкэнд-службе. Я заканчиваю тем, что строил URL для бэкэнд-сервиса на основе URL представления. Что, если я понимаю, REST - это не способ Hypermedia. Это означает, что мой код узла должен знать формат URL-адресов бэкэнд-службы, а не получать URL-адреса и использовать их напрямую.

Так есть ли такая умная функция, как добавление поля url в качестве параметра запроса для href, чтобы сохранить его на клиенте? Я неправильно понимаю ограничение Hypermedia или я вообще пытаюсь его использовать?

1 Ответ

0 голосов
/ 22 марта 2012

Нужно ли использовать ограничение гипермедиа - вопрос мнения. (У меня есть сообщение в блоге, излагающее мое собственное мнение ).

В качестве более конкретного ответа я укажу, что у вас на самом деле есть две отдельные системы REST в этом приложении, одна из которых обслуживает html, а другая - json. Если они эквивалентны по функциональности, ограничение гипермедиа будет означать, что они на самом деле являются одиночной системой, где запросы могут возвращать разные типы мультимедиа на основе заголовка Accepts http. Это устраняет вашу проблему (потому что URL-адреса становятся одинаковыми).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...