Restangular 和 _links
Restangular and _links
我正在开发 AngularJS 应用程序。该应用程序消耗 RESTful/HATEOAS API。 API 具有以下端点,其中包括:
http://localhost:8001/api/tests/1
哪个returns:
{
"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 获取链接模块、事件、主题等?
假设您在 res
对象中有您的响应,您可以使用此代码解析您的 url(找到 here,仅当您使用绝对 url 时才需要小号):
var getLocation = function(href) {
var l = document.createElement("a");
l.href = href;
return l;
};
然后您可以将 Restangular 用于:
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();
这就是我用来让它工作的。
Restangular.oneUrl('module', test._link.module.href);
我正在开发 AngularJS 应用程序。该应用程序消耗 RESTful/HATEOAS API。 API 具有以下端点,其中包括:
http://localhost:8001/api/tests/1
哪个returns:
{
"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 获取链接模块、事件、主题等?
假设您在 res
对象中有您的响应,您可以使用此代码解析您的 url(找到 here,仅当您使用绝对 url 时才需要小号):
var getLocation = function(href) {
var l = document.createElement("a");
l.href = href;
return l;
};
然后您可以将 Restangular 用于:
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();
这就是我用来让它工作的。
Restangular.oneUrl('module', test._link.module.href);