我有一个使用ui路由器的AngularJS应用程序,它调用一个具有超媒体功能的REST API。总的想法是使API生成其各种调用的URL,并防止客户端自己构建URL。
例如,当获取产品列表时,API返回以下内容:
所以问题是:我想要导航到产品的详细信息。我从集合超媒体中有可用的API URL。但是,在更改状态时,我需要将此URL传递给详细状态,以便详细状态的控制器可以获取该产品。
UI URL与API URL完全解耦,即客户端具有自己的URL方案。
保持客户端无状态且每个页面可书签的最佳方法是什么?
一种解决方案是通过ui router的data属性传递URL。但是,该页面将无法添加书签。另一种方法是在UI URL中传递API URL,这将使页面可添加书签(只要API URL不更改),但UI URL会非常丑陋。
还有其他想法吗?
除非我非常错误,否则我不需要模板化的解决方案,即API返回一个URL模板,需要客户端注入参数的解决方案。整个重点是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比上面提供的示例复杂得多。