Rol*_*olf 30 rest hateoas angularjs spring-data-rest
我想知道Angular中是否隐藏了某些功能,或者某些第三方库是否可以轻松创建与HATEOAS兼容的Restful客户端.
在后端,我使用Spring Data/REST生成HATEOAS JSON API.然而,消费它是另一个故事.
例如,我有这3个实体:
{name, address} {firstName, lastName, employer[Company]} {rate, day, employee[Employee], client[Company]}并请求一个活动(模型中最复杂的实体)产生这样的东西:
{
links: [],
content: [{
rate: 456,
day: 1366754400000,
links: [{
rel: "self",
href: "http://localhost:8080/api/activities/1"
},
{
rel: "activities.activity.client",
href: "http://localhost:8080/api/activities/1/client"
},
{
rel: "activities.activity.employee",
href: "http://localhost:8080/api/activities/1/employee"
}]
}]
}
Run Code Online (Sandbox Code Playgroud)
我的API就REST而言(由链接标识的资源).例如,一个Activity有一个Employee.我真正想要使用的是:{rate: 456, day: 1366754400000, employee: {firstName:"xxx", lastName:"xxx" ...}}.
但是,正如您在第一个输出中看到的,我的Activity仅包含指向员工的链接,而不是其数据.Angular或第三方库中是否有任何内容可以解析这些链接并嵌入生成的数据?
有什么输入吗?
提前致谢!
您可以编写一个响应转换来检查返回的对象,检查链接,并在返回响应之前解决它们.请参阅$ http服务文档中的"转换请求和响应"部分.
像这样的东西:
transformResponse: function(rawData) {
var json = JSON.parse( rawData );
forEach( json.content.links, function(link) {
// resolve link...
});
return json;
}
Run Code Online (Sandbox Code Playgroud)
由于"解析链接"步骤本身是$ http调用,因此也将解析子引用.但是,由于这些是异步的,你可能会返回一个承诺而不是真正的价值; 我不知道转换函数是否允许这样做.
正如@charlietfl指出的那样,请注意,这将导致多个HTTP调用返回单个实体.即使我喜欢HATEOAS的概念,如果进行了太多的调用,这可能会导致缓慢.我建议您的服务器直接返回数据或其中一些数据,以获取详细信息.
| 归档时间: |
|
| 查看次数: |
15363 次 |
| 最近记录: |