我有一个带有ui 路由器的AngularJS应用程序,它使用带有Hypermedia的REST API。总体思路是让 API 为其各种调用生成 url,并阻止客户端自己构建 url。
例如,在获取产品列表时,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": []
}
}
]
所以,问题是:我想导航到产品的细节。我有来自集合超媒体的 API url。但是,在更改状态时,我需要以某种方式将此 url 传递给详细状态,以便详细状态的控制器可以获取产品。
UI url 与 API url 完全解耦,即客户端有自己的 url 方案。
实现这一目标的最佳方法是什么,同时保持客户端无状态并且每个页面都可以添加书签?
一种解决方案是通过ui router
'data
属性传递 url。但是,该页面不能添加书签。另一种方法是在 UI url 中传递 API url,这将使页面保持可收藏(只要 API url 不变),但 UI url 会非常难看。
还有其他想法吗?
除非我对此非常错误,否则我不是在寻找模板化解决方案,即 API 返回需要由客户端注入参数的 url 模板的解决方案。关键是 url 已经填充了数据,因为某些 url 比上面提供的示例要复杂得多。