У меня есть AngularJS приложение с Ui маршрутизатор, который потребляет REST API с гипермедиа. Общая идея заключается в том, чтобы API генерировал URL-адреса для своих различных вызовов и не позволял клиенту создавать сами URL-адреса.AngularJS с гипермедиа (HATEOAS): как использовать HyperMedia URLS accross состояния
Например, при получении списка продуктов, вот то, что API возвращает:
[
{
"id": 1,
"name": "Product A",
"_links": {
"self": {
"href": "http://localhost:4444/api/products/1",
"name": null,
"templated": false
},
"actions": []
}
},
{
"id": 2,
"name": "Product B",
"_links": {
"self": {
"href": "http://localhost:4444/api/products/2",
"name": null,
"templated": false
},
"actions": []
}
}
]
Итак, проблема: я хочу, чтобы перейдите к деталям продукта. У меня есть URL-адрес API, доступный из коллекции hypermedia. Однако при изменении состояний мне как-то нужно передать этот url в состояние детали, так что контроллер состояния детали может извлечь продукт.
URL-адреса пользовательского интерфейса полностью отделены от URL-адресов API, то есть клиент имеет свою собственную схему URL-адресов.
Каков наилучший способ достичь этого, сохраняя при этом клиента без гражданства и каждую страницу закладок?
Одним из решений является передать URL-адрес ui router
's data
. Однако страница не будет заклассифицирована. Другой способ - передать URL-адрес API в UI-url, который сохранит страницу закладок (пока URL-адрес API не изменится), но URL-адрес UI будет очень уродливым.
Любые другие мысли?
Если я не ошибаюсь, я не ищу шаблонное решение, то есть решение, в котором API возвращает шаблон URL-адреса, который должен быть проинформирован клиентом. Все дело в том, что url уже заполнен данными, поскольку некоторые URL-адреса довольно сложны, чем пример, приведенный выше.