我正在开发一个AngularJS应用程序。该应用程序使用RESTful / HATEOAS API。 API具有以下端点,其中包括:
http://localhost:8001/api/tests/1
返回:
{
"title": "Test",
"description": "Test",
"created": "2016-01-09T11:52:01+0100",
"enabled": true,
"is_speed_test": true,
"test_id": 1,
"view": [],
"report_card": [],
"cap": [],
"tag": [],
"_links": {
"self": {
"href": "http://localhost:8001/api/tests/2"
},
"module": {
"href": "http://localhost:8001/api/subjects/2/modules/1"
},
"event": {
"href": "http://localhost:8001/api/events/1"
},
"topics": {
"href": "http://localhost:8001/api/subjects/2/modules/1/topics"
},
"creatorUser": {
"href": "http://localhost:8001/api/users/admin"
}
}
}
如何使用Restangular来获取链接的模块,事件,主题等?
答案 0 :(得分:0)
我们假设您在res
对象中有回复,您可以使用此代码解析您的网址(找到here,仅在您使用绝对网址时才需要):
var getLocation = function(href) {
var l = document.createElement("a");
l.href = href;
return l;
};
然后你可以使用Restangular with:
Restangular.one(getLocation(res._links.module).pathname).get();
Restangular.all(getLocation(res._links.topics).pathname).getList();
Restangular.all(getLocation(res._links.creatorUser).pathname).post(newUser);
当然,您仍然需要知道使用哪种方法以及响应是列表还是对象。
如果主机名与您配置的Restangular配合使用的主机名不同:
Restangular.withConfig(function(conf) {
conf.setBaseUrl(getLocation(res._links.module).hostname);
}).one(getLocation(res._links.module).pathname).get();
答案 1 :(得分:0)
这就是我以前的工作方式。
Restangular.oneUrl('module', test._link.module.href);